502
kubernetes
network_error
ai_generated
true
502 Bad Gateway (Ingress/Nginx) — upstream prematurely closed connection
ID: kubernetes/ingress-nginx-502-bad-gateway-upstream
80%Fix Rate
88%Confidence
1Evidence
2023-06-20First Seen
Version Compatibility
| Version | Status | Introduced | Deprecated | Notes |
|---|---|---|---|---|
| ingress-nginx 1.7.0 | active | — | — | — |
| Kubernetes 1.27 | active | — | — | — |
| nginx 1.23 | active | — | — | — |
Root Cause
The backend service (upstream) is not responding or closes connections prematurely, often due to high load or misconfigured timeouts.
generic中文
后端服务(上游)无响应或过早关闭连接,通常由于负载过高或超时配置错误。
Official Documentation
https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#custom-timeoutsWorkarounds
-
85% success Check upstream service health: `kubectl get pods -l app=<service>` and `kubectl logs <pod>`. Increase resources or add horizontal pod autoscaling if under load.
Check upstream service health: `kubectl get pods -l app=<service>` and `kubectl logs <pod>`. Increase resources or add horizontal pod autoscaling if under load.
-
80% success Add ingress annotation to adjust timeouts: `nginx.ingress.kubernetes.io/proxy-read-timeout: '600'` and `nginx.ingress.kubernetes.io/proxy-send-timeout: '600'`.
Add ingress annotation to adjust timeouts: `nginx.ingress.kubernetes.io/proxy-read-timeout: '600'` and `nginx.ingress.kubernetes.io/proxy-send-timeout: '600'`.
中文步骤
检查上游服务健康状态:`kubectl get pods -l app=<service>` 和 `kubectl logs <pod>`。如果负载过高,增加资源或启用水平 Pod 自动伸缩。
添加 Ingress 注释以调整超时:`nginx.ingress.kubernetes.io/proxy-read-timeout: '600'` 和 `nginx.ingress.kubernetes.io/proxy-send-timeout: '600'`。
Dead Ends
Common approaches that don't work:
-
60% fail
Only temporarily clears the issue; the upstream problem remains.
-
70% fail
Does not address the upstream service's inability to handle connections.
-
50% fail
May mask the issue but can cause resource exhaustion if upstream is truly broken.