You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部署在AKS上的WebSocket无法连接问题排查请求

AKS部署Golang WebSocket服务器无法建立连接问题

我们用Golang开发了一个WebSocket服务器,本地及Docker环境测试均正常,但部署到Azure Kubernetes Services(AKS)后无法建立连接,使用的是Azure免费订阅。以下是相关配置及信息:


Deployment.yaml配置

apiVersion: apps/v1
kind: Deployment
metadata:
  name: overseerservice-deployment
  labels:
    app: dexam-overseer
spec:
  replicas: 1
  selector:
    matchLabels:
      app: dexam-overseer
  template:
    metadata:
      labels:
        app: dexam-overseer
    spec:
      containers:
        - name: dexam-overseer
          image: eyadzz/dexam_overseer_service:latest
          ports:
            - containerPort: 9999
          env:
            - name: RABBITMQ_HOST
              value: rabbitmq-service
            - name: RABBITMQ_PORT
              value: :5672

---

apiVersion: v1
kind: Service
metadata:
  name: overseer-service
spec:
  selector:
    app: dexam-overseer
  type: LoadBalancer
  ports:
    - port: 9999
      protocol: TCP
      targetPort: 9999
      nodePort: 30008

JS客户端连接代码

let socket = new WebSocket("ws://20.106.105.25:9999/ws");
console.log("Attempting Connection...");

socket.onopen = () => {
    console.log("Successfully Connected");
    socket.send(("1").toString())
};

socket.onclose = event => {
    console.log("Socket Closed Connection: ", event);
    socket.send("Client Closed!")
};

socket.onerror = error => {
    console.log("Socket Error: ", error);
};

错误信息

WebSocket连接错误截图:显示连接失败,错误码1006


排查建议

  • 确认负载均衡器外部IP有效性:执行kubectl get services overseer-service,检查输出的EXTERNAL-IP是否为20.106.105.25,且状态为Ready。
  • 检查AKS网络安全组规则:登录Azure门户,找到AKS集群对应的NSG,添加入站规则允许TCP 9999端口的外部流量。免费订阅的AKS默认可能限制非常见端口的外部访问。
  • 验证Pod内服务状态:进入WebSocket Pod内部,执行kubectl exec -it <你的Pod名称> -- curl -i http://localhost:9999/ws,查看是否返回WebSocket协议的握手响应(状态码101 Switching Protocols)。
  • 检查服务与Pod的关联:执行kubectl get endpoints overseer-service,确认输出中包含运行中的Pod IP和端口,说明Service已正确关联Pod。
  • 确认RabbitMQ依赖可用性:在WebSocket Pod内执行nslookup rabbitmq-service,检查是否能解析到RabbitMQ服务的IP;同时确认RabbitMQ的Deployment和Service是否正常运行,避免服务因依赖未就绪而启动失败。
  • 核对WebSocket路由路径:确认服务端代码中WebSocket的监听路径是/ws,和客户端连接的路径完全一致,没有拼写或路径层级错误。

内容的提问来源于stack exchange,提问作者Eyad Youssef

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 21:45:37