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

Kubernetes集群内WEB Pod调用API Pod失败求助

解决Kubernetes集群中WEB Pod调用API Pod的ECONNREFUSED问题

核心排查与修复步骤

1. 确认API Service与Pod的标签匹配

  • 检查API Deployment的Pod标签和API Service的selector是否完全一致:
    执行以下命令对比:
    kubectl describe deployment <api-deployment-name> | grep Labels
    kubectl describe service <api-service-name> | grep Selector
    
    若两者不匹配,Service无法关联到API Pod,直接导致集群内服务名访问失败。

2. 验证API Pod的监听地址

确保Node.js API应用监听在0.0.0.0而非localhost/127.0.0.1:

  • 检查代码中的监听逻辑,正确写法应为:
    app.listen(8000, '0.0.0.0', () => {
      console.log('API running on port 8000');
    });
    
    若只监听回环地址,集群内其他Pod无法访问该端口。

3. 检查Service端口配置

确认API Service的targetPort与API Pod的监听端口(8000)一致:

  • 查看Service YAML配置,需包含:
    ports:
      - port: <service-port>
        targetPort: 8000
    
    targetPort写错会导致Service转发到错误端口,触发连接拒绝。

4. 测试集群内DNS解析与连通性

进入WEB Pod内部执行以下命令排查:

# 测试API服务名的DNS解析
nslookup <api-service-name>
# 直接测试API服务的连通性
curl http://<api-service-name>:<service-port>/你的接口路径
# 用ClusterIP测试
curl http://<api-service-cluster-ip>:<service-port>/你的接口路径
  • 若DNS解析失败,检查CoreDNS组件状态:kubectl get pods -n kube-system,确保coredns Pod处于Running状态。
  • 若ClusterIP可访问但服务名不可用,检查WEB Pod的dnsPolicy是否为默认的ClusterFirst。

5. 排查网络策略限制

若集群配置了NetworkPolicy,确认规则允许WEB Pod访问API Pod:

  • 检查NetworkPolicy的ingress规则,需包含WEB Pod的标签匹配:
    ingress:
    - from:
      - podSelector:
          matchLabels:
            app: <web-pod-label>
    
    未配置允许规则时,默认可能拒绝跨Pod访问。

6. 确认API Pod状态

查看API Pod日志,确认应用正常启动并监听8000端口:

kubectl logs <api-pod-name>

若Pod未就绪或应用启动失败,也会导致连接拒绝。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 03:43:24