我想在Kubernetes中启动一个集群Socket IO应用程序。当我创建一个服务(无论是NodePort还是LoadBalancer)时,客户端应用程序一直断开连接,并使用以下日志重新连接:
undefined
oah4g28zZCw36g1MAAAm
undefined
undefined
oac4g28zZCw36g1MFAAAx
undefined
这发生得很快
但是,当我直接连接到单个Pod时,问题就消失了,连接变得稳定。
我如何创建服务是通过以下命令:
kubectl expose deployment xxx --type=LoadBalancer --port=80 --target-port=3000
我知道服务中缺少KeepAlive或Timeout配置,但我如何添加这些或更好地说正确配置Socket IO服务?
您可以使用sessionAffinity: ClientIP
,它将从K8s服务管理会话。
kind: Service
apiVersion: v1
metadata:
name: example
spec:
selector:
app: example
ports:
- name: http
protocol: TCP
port: 80
targetPort: 80
sessionAffinity: ClientIP
sessionAffinityConfig:
clientIP:
timeoutSeconds: 1800
只是裁判:ws websocket服务器库需要粘会话时使用负载均衡器后面吗?