首页/云/Kubernetes 速查/Ingress 502 / 503 排查
网络与服务55 条

Ingress 502 / 503 排查

502 多为控制器连不上后端,503 常是没有就绪后端:先看 Service 的端点,再看 Ingress 控制器日志与后端探针状态。

Kubernetes 速查云更新于 2026-10-13

排查定位

Ingress 返回 502 或 503,问题几乎都不在 Ingress 对象本身:502 表示控制器作为代理连不上后端(连接被拒、超时、协议不匹配),503 表示控制器认为没有可用后端。适用平台是 Kubernetes,以 ingress-nginx 为例,它的 upstream 就是 Service 的端点列表,端点来自就绪探针通过的 Pod。定位顺序是「先看 Endpoints 有没有地址,再看控制器日志里的 upstream 报错,最后核对探针与端口」。

基本信息

适用平台Kubernetes,以 ingress-nginx 等 Ingress 控制器为例
502 常见成因targetPort 与容器监听端口不一致、后端进程未起、协议写错(HTTP 对 HTTPS)
503 常见成因端点列表为空:Pod 未 Ready 或被选择器摘除
排查入口kubectl get endpoints、控制器日志、Pod 就绪状态

典型使用场景

  • 新上线服务首次访问失败:核对 Service 的 targetPort 与容器实际监听端口
  • 发布过程中短暂 502:滚动更新期间旧 Pod 已停、新 Pod 还没就绪,检查探针与 maxUnavailable
  • 间歇性 503:探针偶发失败导致端点被摘除,需要看探针阈值与超时
  • 只在某个域名上失败:核对 Ingress 的 rules.host 与 Service 名、端口是否一一对应
  • 切换后端协议后全挂:如后端从 HTTP 改成 HTTPS,注解没同步调整

分层定位

分层定位
kubectl get ingress web -o wide                       # 入口对象与后端指向
kubectl describe ingress web | tail -20                # 事件与规则解析结果
kubectl get endpoints web-svc                          # 后端地址是否存在
kubectl -n ingress-nginx logs deploy/ingress-nginx-controller --tail=80 | grep -iE 'error|upstream'
kubectl get pods -l app=web -o wide                    # READY 列决定是否进端点
kubectl exec -it web-x -- netstat -tlnp | head          # 容器实际监听的端口

状态码与原因对照

现象直接原因核对点
502 Bad Gateway控制器连后端失败(拒连/超时/协议不符)targetPort、监听端口、backend-protocol 注解
503 Service Unavailable端点列表为空就绪探针、Pod READY、选择器标签
504 Gateway Timeout后端处理超时proxy-read-timeout 与实际处理耗时
偶发 502发布过程中的副本切换探针初始化延迟、preStop 与摘除时机
Pod 处于 Running 但未 Ready 时不会进入端点列表,表现为 503;targetPort 与容器监听端口不一致则表现为 502,这两个映射关系是最快的判别依据。
控制器日志里的 upstream 报错会直接写出后端地址与失败原因(connection refused、no live upstreams),比反复刷新浏览器有效得多。

易错点

  • 只看 Ingress 本身:Events 与控制器日志里的 upstream 报错更直接,Ingress 对象通常没有问题
  • 忽略探针:就绪探针失败会持续摘除端点,流量自然进不来,表现为 503 而不是后端进程崩溃
  • 改了后端协议或端口但没同步注解:backend-protocol 与 targetPort 必须与后端实际行为一致,否则 502 长期存在
  • 在滚动更新期间把 502 当故障:副本切换本身会有秒级缺口,需结合探针配置与发布节奏判断是否需要调参

数据来源与参考

  • Kubernetes 官方文档 · Ingress
  • ingress-nginx 文档 · 故障排查
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌