✦ For everyone, free.

Practical knowledge for real and everyday life

Home

Kubernetes Readiness Probe Behavior

Kubernetes Readiness Probes determine if a container is ready to serve traffic, ensuring applications are healthy and available in the cluster.

Kubernetes Readiness Probe Behavior is the set of rules governing how the kubelet uses a readinessProbe to determine whether a running container is currently capable of handling requests, and how that determination feeds into Service endpoint membership. Unlike a liveness probe, a readiness probe failure never restarts the container; its sole effect is to control whether the Pod participates in load-balanced traffic.


Purpose: Traffic Eligibility, Not Health Restoration

What Readiness Should Check

A readiness probe should verify that the application is presently able to serve a real request correctly, dependencies reachable, caches warmed, connection pools initialized, rather than merely that the process is alive. This is the appropriate place to check downstream dependency health, in contrast to liveness probes, since a failed readiness check simply removes the Pod from traffic without disturbing the running process.

containers:
  - name: app
    readinessProbe:
      httpGet:
        path: /ready
        port: 8080
      periodSeconds: 5
      failureThreshold: 2

Effect on the ready Field and Conditions

Container-Level ready Flag

Each failed accumulation of failureThreshold consecutive readiness checks sets that specific container's ready field to false in status.containerStatuses. A success streak of successThreshold consecutive passes flips it back to true.

Pod-Level Condition Propagation

The Pod's ContainersReady condition is True only when every container in the Pod reports ready: true. The Ready condition then depends on ContainersReady together with any configured readinessGates.

status:
  containerStatuses:
    - name: app
      ready: false
  conditions:
    - type: Ready
      status: "False"

Effect on Service Endpoints

Endpoint Removal Without Deletion

When a Pod's Ready condition becomes False, the endpoint controller removes it from the corresponding Service's Endpoints (or EndpointSlice) object, so new connections are no longer routed to it. The Pod itself remains running and unaffected; only its traffic eligibility changes.

kubectl get endpoints app-service -o wide

Automatic Re-Addition

Once the readiness probe passes again for successThreshold consecutive checks, the Pod is automatically re-added to the Service's endpoint list without any manual intervention.


Interaction With Rolling Updates

Gating Rollout Progress

Deployment controllers watch Pod readiness to decide how quickly to proceed with a rolling update. A new Pod that never becomes ready blocks the rollout from advancing past maxUnavailable, preventing an update from replacing healthy old Pods with broken new ones faster than the broken state can be detected.

spec:
  strategy:
    rollingUpdate:
      maxUnavailable: 1
      maxSurge: 1

Readiness Versus Liveness Independence

Two Probes, Two Independent Signals

A container can simultaneously report ready: false while still passing its liveness probe, meaning it is alive but temporarily unfit for traffic, for example while reconnecting to a dependency after a network blip. This is the intended, common case, not an error state.

containers:
  - name: app
    livenessProbe:
      httpGet:
        path: /healthz
        port: 8080
    readinessProbe:
      httpGet:
        path: /ready
        port: 8080

Readiness Probe Flow Diagram

Probe fails ready=false, Ready condition false Removed from Service endpoints

This traffic-only remediation path makes readiness probing the correct tool for handling temporary, self-resolving unavailability, while restart-triggering liveness probing remains reserved for conditions the application cannot recover from on its own.