You need to enable JavaScript to run this app. K8s经Ingress访问Node服务返回502 端口疑似未开放怎么排查
优惠活动
大模型
产品
解决方案
定价
更多

K8s经Ingress访问Node服务返回502 端口疑似未开放怎么排查

502 Bad Gateway 排查修复指南

基于已知排查条件(Pod内部localhost:8080访问正常),按优先级核对以下配置:

  • 核心高发问题:检查Node服务的网络监听绑定地址
    近80%的同类故障来源于服务仅绑定回环地址127.0.0.1而非全网卡地址0.0.0.0。
    在Pod内部执行netstat -tulpn | grep 8080核对监听状态:
    • 若输出为127.0.0.1:8080:意味着只有Pod内部的回环链路能访问服务,所有来自Pod外部(Service转发、Ingress转发、节点直连)的请求都会被直接拒绝,触发502错误,完全匹配你当前“Pod内curl localhost通、外部访问失败、节点视角看不到容器开放端口”的现象。
    • 修复方式:修改服务启动逻辑中的监听配置,将绑定地址改为0.0.0.0,例如:
      // 错误配置
      app.listen(8080, '127.0.0.1', () => {})
      // 正确配置
      app.listen(8080, '0.0.0.0', () => {})
      
  • 标签匹配校验:确认Service能正确关联后端Pod
    当前Service配置的后端选择器为app: test-deployment,如果Deployment的Pod模板未配置完全一致的标签,会导致Service无法获取到后端Pod的IP列表,因无可用后端触发502。
    执行kubectl get endpoints test-service验证关联状态:
    若返回的ENDPOINTS列无对应Pod IP,说明标签匹配失效,需要调整Deployment的spec.template.metadata.labels配置,保证和Service选择器完全匹配。
  • 逐层链路验证:定位具体故障节点
    按网络转发路径逐段测试,缩小故障范围:
    1. 在Pod内部执行curl <Pod自身IP>:8080:若不通,回到第一步检查监听绑定地址
    2. 在集群任意工作节点执行curl <Pod自身IP>:8080:若不通,同样指向监听地址配置错误
    3. 在集群任意工作节点执行curl <Service ClusterIP>:80:若不通,核对Service的targetPort配置,确认与服务实际监听端口一致
    4. 检查Ingress配置兼容性:若集群使用networking.k8s.io/v1版本的Ingress资源,必须为路径增加pathType: Prefix配置,缺少该字段会导致Ingress Controller无法正确匹配路由规则,引发后端转发失败。
  • 配置说明:Dockerfile中的EXPOSE 8080仅为镜像信息声明,不会实际绑定或开放端口,无需为该配置做额外调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.30 22:15:03