首页/云/云与容器速查/Service/Ingress 502/504 排查

Service/Ingress 502/504 排查

网关层 502/504 大多不是网关自己坏了:502 常是后端端口不通/进程崩,504 是后端超时。按 入口→Service→Endpoints→Pod 链路逐层缩小范围。

云与容器速查云更新于 2026-10-13

Service 与 Ingress 报 502 504 怎么排查

入口层报出的网关错误大多不是入口自己坏了:五零二通常是入口连不上后端或收到非法响应,五零四则是后端处理超时。按入口、服务、后端列表、实例这条链路逐层缩小范围,能很快定位到是网络策略问题、后端端口问题,还是应用处理能力问题。

基本信息

五零二含义入口无法连接后端,或后端返回了不符合协议的响应
五零四含义入口在等待后端响应时超时
第一现场服务后端列表是否为空,为空说明选择器或就绪检查有问题
第二步确认实例内端口是否真的在监听,用本地转发直连验证
第三步核对入口规则与路径重写,配置错误通常表现为找不到页面
日志位置入口控制器日志会记录上游错误与超时信息

典型排查动作

  • 先查后端列表:列表为空时问题在选择器或就绪检查,不在网络
  • 用本地端口转发直连服务,判断问题在入口层还是应用与网络层
  • 确认容器内监听的地址:只监听回环地址时外部永远连不上
  • 核对服务端口与目标端口映射,端口写错表现为连接被拒
  • 检查网络策略与安全组:入口控制器所在网络与后端之间的放行是否完整
  • 分析超时问题:慢查询、锁等待、下游依赖变慢都会表现为网关超时

现象与原因对照

现象常见原因验证方式
五零二且后端列表为空选择器不匹配或实例未就绪查看服务后端列表与选择器
五零二且后端存在端口不通或进程崩溃本地转发直连与查看日志
五零四后端处理超时看应用耗时与下游依赖
找不到页面入口规则或路径重写错误核对规则与访问路径
间歇性错误部分副本异常或就绪检查过松逐副本对比日志与就绪状态

链路排查

链路排查
kubectl get endpoints web -n dev                     # 后端列表是否为空
kubectl port-forward svc/web 8080:80 -n dev          # 本地直连绕过入口
curl -si http://127.0.0.1:8080/ | head -5            # 直连结果
kubectl logs -n ingress-nginx deploy/ingress-nginx-controller --tail=50 | grep -i error
# 直连能通而域名报错,问题在入口层;两者都不通,问题在服务或应用
直连能通而域名不通指向入口层,两者都不通则问题在服务定义或应用,这个二分法能省掉大量猜测。
超时不要先调大超时时间:慢查询与锁等待没解决,调大只是把故障从快速失败变成长时间占用连接。
端口映射要核对两层:服务端口与目标端口分别对应入口侧与容器侧,写错时现象是连接被拒而不是超时。
间歇性错误优先怀疑个别副本:部分实例异常时,请求命中异常副本就失败,命中正常副本就成功。

预防性检查

  • 为入口与后端配置与业务处理时间匹配的超时值
  • 为关键服务设置就绪检查,避免未就绪实例接收流量
  • 发布前核对入口规则与路径映射,避免上线即报错
  • 对慢接口做监控与限流,避免拖垮整个入口层
  • 保留入口控制器日志,故障时能快速定位上游问题

易错点

  • 先怀疑入口控制器并重启它,真实原因在后端列表或就绪检查
  • 后端列表为空还在改应用代码,问题其实在选择器与标签
  • 超时问题直接调大超时时间,故障由快速失败变成长时间卡顿
  • 只在新版本副本上排查,忽略旧版本副本仍在接收流量
  • 忽略网络策略与前缀列表,放行清单不完整导致流量时通时不通

数据来源与参考

  • Kubernetes Docs:Service
  • ingress-nginx 文档:Troubleshooting

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌