阿里云不支持 Web 端的 websocket,所以使用 socket.io,通过 http 模拟 websocket
遇到的问题是,socket 建立连接之后,就必须保持这个连接,而 k8s 默认负载均衡会把http 请求随机打到一台 pod 上
所以就需要会话保持,保证从建立连接开始,所有的请求都打到同一个 pod
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/alibaba-cloud-loadbalancer-persistence-timeout: "60"
name: service
namespace: default
spec:
ports:
- protocol: TCP
port: 80
targetPort: 8088
selector:
app: server
sessionAffinity: ClientIP
sessionAffinityConfig:
clientIP:
timeoutSeconds: 10800
type: LoadBalancer