Kubernetes Ingress 502/504:从入口到 Pod 的排查路径

区分 502 与 504 的含义,检查 Ingress 配置、Service Endpoint、协议和上游超时。

文章目录 · 4 节

502 通常表示入口无法与上游正确通信,504 表示上游在超时窗口内没有响应。先确认错误由 CDN、外部负载均衡还是 Ingress Controller 返回。

验证路由对象

kubectl describe ingress <NAME> -n <NS>
kubectl get svc,endpoints,endpointslice -n <NS>
kubectl get pod -n <NS> -o wide

Service 没有 Endpoint 时检查 selector、Pod Ready 状态和 readinessProbe。Endpoint 存在但失败时,从 Ingress Pod 内直接访问 Service 和 Pod IP。

核对协议与端口

后端实际提供 HTTPS,而 Ingress 按 HTTP 转发,会稳定返回 502。确认 Service targetPort、应用监听地址、TLS 到后端配置和 gRPC 协议设置一致。

分析超时

kubectl logs -n ingress-nginx -l app.kubernetes.io/component=controller --since=10m

日志中的 upstream connect time、header time 和 response time 能区分建连慢、首字节慢和响应体慢。不要直接把所有超时调大,先确认慢点。

变更后验证

同时检查入口状态码、上游延迟、Endpoint 数量和重试次数。重试会放大故障,应限制次数并设置总超时预算。