Node.js 在K8s中部署后频繁断开和重新连接web套接字请求

Node.js 在K8s中部署后频繁断开和重新连接web套接字请求,node.js,angularjs,kubernetes,websocket,socket.io,Node.js,Angularjs,Kubernetes,Websocket,Socket.io,我正在开发一个聊天应用程序,在后端使用socket.io库,在前端使用ngx socket io。聊天功能在本地环境下工作正常,浏览器的“网络”选项卡中只有一个web套接字连接 但是,当我在Kubernetes集群上部署代码时,我可以看到web套接字连接不会持续更长时间,之前的web套接字请求已关闭,新请求已启动,即web套接字连接正在断开连接,然后重新连接 即使在Kubernetes集群中的单个活动pod或服务上,它也不是持久的 我希望一个单独的web套接字连接能够持续更长的时间,只有这样我才

我正在开发一个聊天应用程序,在后端使用
socket.io
库,在前端使用
ngx socket io
。聊天功能在本地环境下工作正常,浏览器的“网络”选项卡中只有一个web套接字连接

但是,当我在Kubernetes集群上部署代码时,我可以看到web套接字连接不会持续更长时间,之前的web套接字请求已关闭,新请求已启动,即web套接字连接正在断开连接,然后重新连接

即使在Kubernetes集群中的单个活动pod或服务上,它也不是持久的

我希望一个单独的web套接字连接能够持续更长的时间,只有这样我才能让live chat正常工作,否则一旦启动新的web套接字连接,live chat就会停止。

您需要为websocket协议的入口应用以下注释。见示例:


此问题通过使用traefik控制器解决,traefik控制器是一种高级控制器,而不是nginx ingress控制器。

如何访问POD?通过入口?通过服务IP?直接通过pod的IP?通过入口访问。但是,我已经尝试通过本地机器上的端口转发访问POD和服务。您有哪些入口-HaProxy,NGiNX?我们正在使用NGiNX?代理过程中的升级头是否也需要更改NGiNX配置?这是什么意思?下面是一个websocket连接的入口示例,我们使用angular作为前端,使用NGINX作为Web服务器来承载angular代码。因此,我询问Web服务器端的配置,以启用WebSocket。我对入口使用了上述配置,但结果仍然相同,连接建立,然后在一段时间后断开,升级头也正常发生。我们还尝试了无入口。它不是持久性的。因此,它与k8s无关,但与备份应用程序的配置有关。当我在本地计算机上运行它时,Nginx具有默认配置,它运行良好。但是当我在kubernetes中部署它时,连接不是持久的。
nginx.ingress.kubernetes.io/proxy-read-timeout: 3600
nginx.ingress.kubernetes.io/proxy-send-timeout: 3600