How to fix Deployment replicas not ready, pods failing health checks in Kubernetes

KubernetesINTERMEDIATEHIGHUpdated Dec 6, 2025ยท 180 views

Deployment pods stay in not-ready state due to failing health checks, application crashes, or resource constraints. Fix by debugging pods, adjusting probe settings, fixing application issues, or increasing resources.

Quick fix

Fixes DEPLOYMENT_NOT_READY

kubectl describe deployment -n <namespace> <name>
kubectl get pods -n <namespace> -o wide
kubectl logs -n <namespace> <pod-name>
  1. Check deployment status
  2. Increase initialDelaySeconds
  3. Fix application configuration
  4. Increase resource requests
kubernetes โ€” error
kubectl describe deployment -n <namespace> <name>
kubectl get pods -n <namespace> -o wide
kubectl logs -n <namespace> <pod-name>
Deployment replicas not ready, pods failing health checks

What this error means

A deployment is considered "not ready" when fewer pods are in Ready state than the desired replica count. This means: 1. Pods are created and running 2. Their readiness probes are failing 3. Traffic doesn't route to them 4. Your deployment is effectively offline Unlike pending pods, NotReady pods indicate application-level issues, not scheduling issues.

Typical symptoms

  • kubectl get deployment shows 0/3 ready
  • Pod shows ContainerReady=False
  • Application logs show startup errors
  • Readiness probe endpoint returns non-200
  • Deployment stuck at same replica count for minutes
  • kubectl logs shows successful startup but probe fails

Common causes

  1. Readiness probe misconfigured
  2. Application startup too slow
  3. Missing environment variables or config
  4. Database/dependency unavailable
  5. Port mismatch between probe and application
  6. Resource constraints causing slow startup

How to fix "Deployment replicas not ready, pods failing health checks"

1Check deployment status
bash
kubectl describe deployment -n <namespace> <name>
kubectl get pods -n <namespace> -o wide
kubectl logs -n <namespace> <pod-name>
2Increase initialDelaySeconds
bash
kubectl edit deployment -n <namespace> <name>

# Increase readiness probe delay:
readinessProbe:
  httpGet:
    path: /health
    port: 8080
  initialDelaySeconds: 60  # Increased
3Fix application configuration
bash
# Check environment variables:
kubectl describe pod -n <namespace> <pod-name>

# Check application logs:
kubectl logs -n <namespace> <pod-name> --previous
4Increase resource requests
bash
kubectl edit deployment -n <namespace> <name>

# Increase resources:
resources:
  requests:
    memory: "256Mi"
    cpu: "250m"
  limits:
    memory: "512Mi"
    cpu: "500m"
5Verify all replicas are ready
bash
kubectl get deployment -n <namespace> <name>
# READY should show N/N

Advanced notes

For debugging, disable readiness probe temporarily by setting failureThreshold to 999999.

Frequently asked questions

What does "DEPLOYMENT_NOT_READY" mean?
A deployment is considered "not ready" when fewer pods are in Ready state than the desired replica count. This means: 1. Pods are created and running 2.
How do I fix "DEPLOYMENT_NOT_READY"?
Deployment pods stay in not-ready state due to failing health checks, application crashes, or resource constraints. Fix by debugging pods, adjusting probe settings, fixing application issues, or increasing resources.
What causes "DEPLOYMENT_NOT_READY"?
Readiness probe misconfigured Application startup too slow Missing environment variables or config
Is the "DEPLOYMENT_NOT_READY" error serious?
Yes. This is a high-severity error that usually blocks work until it is fixed, but the steps above resolve it.

Official resources & further reading