GKE Ingress: backends marked UNHEALTHY (502) Google Cloud / Firebase Origin: Platform & cloud Last updated 4 Nov 2026

GKE Ingress: Some backend services are in UNHEALTHY state / 502 Server Error from the load balancer

The Google load balancer's health checks fail for the Ingress backends, so it returns 502 or 'no healthy upstream'.

Exact message you may see Some backend services are in UNHEALTHY stateingress.kubernetes.io/backends UNHEALTHY502 Server Error The server encountered a temporary error and could not complete your request GKE ingressbackend_service UNHEALTHY GKEGKE Ingress health check failing
Seen on: Google Cloud Kubernetes

Meaning

GKE creates a health check from the readiness probe or the / path. If the app returns non-200 on /, listens on a different port, or the firewall blocks Google's health-check ranges (130.211.0.0/22, 35.191.0.0/16), the backend stays unhealthy. Configure a BackendConfig with the correct path/port and ensure the Service is NEG-enabled.

Common causes

  • App returns 301/404 on the health check path
  • Readiness probe path/port differs from the app
  • Firewall blocking health check ranges
  • Service port/targetPort mismatch
  • Pods not Ready

⚡ Quick fix

  1. Add a BackendConfig with healthCheck.requestPath
  2. Fix readiness probe and Service ports
  3. Allow 130.211.0.0/22 and 35.191.0.0/16 in firewall rules

Detailed fix by platform

kubectl

  1. kubectl describe ingress NAME shows ingress.kubernetes.io/backends: {"k8s1-...":"UNHEALTHY"}

Code examples

Custom health check

yaml
apiVersion: cloud.google.com/v1
kind: BackendConfig
metadata: { name: app-backendconfig }
spec:
  healthCheck:
    type: HTTP
    requestPath: /healthz
    port: 8080

How to diagnose

  1. Backends — UNHEALTHY annotation?
  2. Path — Returns 200?
  3. Firewall — Ranges allowed?

🔧 Still not fixed?

Many errors look alike. If the steps above didn’t solve it, one of these is probably what you’re facing:

Where this error sits

Origin: Platform & cloud. Errors that are often confused with or caused by this one (click to open):

502 Bad Gateway: failed_to_connect_to_backend — Google Cloud Load Balancing: 502 Bad Gateway — jsonPayload.statusDetails: failed_to_connect_to_backend / backend_connection_closed_before_data_sent_to_client (Google Cloud / Firebase)502 Bad Gateway: fail…admission webhook denied the request — Error from server: admission webhook "validate.nginx.ingress.kubernetes.io" denied the request (Kubernetes)admission webhook den…Cloud Run 503: The request failed because the instance had an error — Cloud Run: 503 Service Unavailable — The request was aborted because there was no available instance (Google Cloud / Firebase)Cloud Run 503: The re…default backend - 404 — Ingress returns "404 Not Found" / "default backend - 404" (ingress-nginx) (Kubernetes)default backend - 404gke-gcloud-auth-plugin not found — kubectl: error: executable gke-gcloud-auth-plugin not found — it looks like you are trying to use a client-go credential plugin that is not installed (Google Cloud / Firebase)gke-gcloud-auth-plugi…GKE: 0/3 nodes are available: Insufficient cpu — GKE/Kubernetes: Pod unschedulable — 0/3 nodes are available: 3 Insufficient cpu (Google Cloud / Firebase)GKE: 0/3 nodes are av…GKE: Quota 'CPUS' exceeded — GKE/Compute: Quota 'CPUS' exceeded. Limit: 8.0 in region us-central1 (QUOTA_EXCEEDED) (Google Cloud / Firebase)GKE: Quota 'CPUS' exc…Readiness probe failed — Readiness probe failed: HTTP probe failed with statuscode: 503 / connect: connection refused (Kubernetes)Readiness probe failedGKE Ingre…

Explore the map of this error Full error map →

🧠 Still stuck? Analyze your error

Paste the full message, response headers or stack trace — we'll detect the platform and point to the most likely cause.

💬 What worked for others

No tips yet — did something else fix this for you?

Share what worked for you

Tips are checked by an editor before they appear. Links are removed.