networkingCritical
Fix: Envoy Proxy 503 No Healthy Upstream
All requests returning 503 Service Unavailable
!Symptoms
- All requests returning 503 Service Unavailable
- Envoy logs show 'no healthy upstream'
- Health checks failing for all endpoints
- Service mesh traffic completely broken
?Root Causes
- All backend pods failed health checks simultaneously
- Health check configuration too aggressive (low timeout, high threshold)
- Backend service port mismatch in Envoy cluster configuration
- DNS resolution failing for upstream service names
- mTLS misconfiguration — Envoy can't establish TLS with backends
#Diagnosis Steps
- 1Check Envoy admin endpoint: `curl localhost:15000/clusters` — look for health flags
- 2Check upstream health: `curl localhost:15000/clusters | grep health_flags`
- 3Review Envoy access logs for upstream connection errors
- 4Verify backend pods are running and passing their own health checks
- 5Check Envoy config dump: `curl localhost:15000/config_dump`
>Fix
- 1Fix backend service health — restart unhealthy pods or fix the underlying issue
- 2Relax health check parameters: increase timeout and unhealthy_threshold
- 3Fix port mismatch between Envoy cluster config and backend service
- 4Fix DNS: ensure CoreDNS is running and service names resolve
- 5Fix mTLS certificates: regenerate or rotate if expired
*Prevention
- Set reasonable health check intervals and thresholds
- Use outlier detection instead of aggressive health checks
- Monitor upstream health metrics in your dashboards
- Implement circuit breaking to handle partial failures gracefully
- Test health check configuration changes in staging
Related Error Messages
no healthy upstreamupstream connect error or disconnect/reset before headers503 UCall hosts are unhealthy