✦ For everyone, free.

Practical knowledge for real and everyday life

Home

Kubernetes Workload Status Conditions

Kubernetes Workload Status Conditions track workload health and state, showing readiness and lifecycle status in the cluster.

Kubernetes Workload Status Conditions are the typed, timestamped boolean entries found in status.conditions across Deployment, StatefulSet, DaemonSet, Job, and CronJob objects, providing a structured, machine-readable summary of a controller's current health and progress that goes beyond simple replica counts. While each controller type defines its own specific condition types, they share a common structural pattern and serve the same underlying purpose: surfacing why a workload is or is not in its desired state, not merely that it is or isn't.


The Common Condition Structure

Shared Fields Across Controller Types

Every workload condition entry, regardless of which controller produces it, follows the same shape: type identifies which aspect of health it describes, status is True, False, or Unknown, lastTransitionTime records when status last changed, and reason and message provide a machine-readable code and human-readable explanation.

status:
  conditions:
    - type: Available
      status: "True"
      lastTransitionTime: "2026-07-18T10:00:00Z"
      reason: MinimumReplicasAvailable
      message: "Deployment has minimum availability."

Deployment Conditions

Available and Progressing

A Deployment exposes Available, true once enough replicas have been ready for minReadySeconds, and Progressing, true while the controller is actively working toward the desired state, false with reason ProgressDeadlineExceeded if a rollout stalls past progressDeadlineSeconds.

status:
  conditions:
    - type: Progressing
      status: "False"
      reason: ProgressDeadlineExceeded

StatefulSet and DaemonSet Status Fields

Numeric Status Without a Dedicated Conditions Array

Notably, StatefulSet and DaemonSet historically expose health primarily through numeric status fields, readyReplicas, currentReplicas, numberReady, numberAvailable, rather than a rich conditions array comparable to a Deployment's. Operators reasoning about these controllers' health typically compare these counts against desired totals directly rather than reading a type/status condition pair.

kubectl get statefulset web -o jsonpath='{.status.readyReplicas}/{.status.replicas}'

Job Conditions

Complete and Failed

A Job exposes Complete, true once the required number of successful completions has been reached, and Failed, true once backoffLimit or activeDeadlineSeconds has been exceeded, both terminal in the sense that once either becomes true the Job takes no further reconciling action.

status:
  conditions:
    - type: Failed
      status: "True"
      reason: BackoffLimitExceeded

FailureTarget and SuccessCriteriaMet

Newer Job condition types, FailureTarget and SuccessCriteriaMet, provide intermediate signals ahead of the final Failed or Complete condition, useful for observing that a terminal outcome is about to be recorded before it is finalized, particularly relevant when podFailurePolicy or successPolicy introduces additional evaluation steps.


Why Conditions Exist Alongside Simpler Status Fields

Diagnosing Cause, Not Just State

A replica count alone tells an operator that a Deployment has fewer ready Pods than desired, but not why. The reason and message fields on a condition are what actually narrow the investigation, distinguishing a slow rollout from a fundamentally broken one without requiring a deep dive into individual Pod events first.

kubectl get deployment status-conditions-example -o jsonpath='{.status.conditions[?(@.type=="Progressing")].message}'

Workload Status Conditions Diagram

Deployment: Available, Progressing Job: Complete, Failed StatefulSet: numeric status fields Common: type/status/reason

Reading conditions rather than relying on replica counts alone is the difference between knowing a workload is unhealthy and knowing specifically why, which is what makes conditions the primary diagnostic surface for automated alerting and dashboards built on top of workload controllers.