希望你一切都好
我在尝试在 Kubernetes 内的应用程序之间打开通信时遇到问题。目前客户端与服务器之间通过socket.io进行通信,但是当将其添加到kubernetes时,我遇到以下问题:服务器和客户端连接,我可以从服务器日志中知道它们是这样做的,但没有发生事件交换!
我在互联网上到处搜索,但我找到的解决方案是针对GKE的,并且我正在运行由kubeadm创建的集群,因此它们不可用。有没有人经历过类似的事情?
我可以问的一些问题:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: dpiot
annotations:
#nginx.ingress.kubernetes.io/rewrite-target: /
nginx.ingress.kubernetes.io/proxy-connect-timeout: "3600"
nginx.ingress.kubernetes.io/proxy-read-timeout: "3600"
nginx.ingress.kubernetes.io/proxy-send-timeout: "3600"
nginx.ingress.kubernetes.io/websocket-services: dpiot-back-service
spec:
ingressClassName: nginx
rules:
- host: dpiotfront.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: dpiot-front-service
port:
number: 80
- path: /socket.io/
pathType: ImplementationSpecific
backend:
service:
name: dpiot-back-service
port:
number: 80
我已经搜索了多个小时但没有结果,我已经没有选择了,如果有人可以帮助我,我将非常感激。您需要任何其他信息,请询问!
集群信息:
Kubernetes版本:1.29.0 使用的云:裸机 安装方法:kubeadm 主机操作系统:CentOS 7 CNI 和版本:Calico CRI 和版本:Containerd
您需要将类似的内容添加到您的 Kubernetes Ingress 配置中:
nginx.ingress.kubernetes.io/configuration-snippet: |
proxy_http_version 1.1;
proxy_set_header Upgrade "websocket";
proxy_set_header Connection "Upgrade";