阿里云不支持 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