Skip to content
Latchkey

Kubernetes "deployment exceeded its progress deadline" in CI - Fix it

A Deployment tracks how long it has gone without progress. If new ReplicaSet pods do not become available within progressDeadlineSeconds (default 600s), the controller marks the rollout failed and kubectl rollout status returns this error.

What this error means

kubectl rollout status deploy/<name> fails in CI with error: deployment "<name>" exceeded its progress deadline. New pods are typically stuck NotReady, Pending, or crash-looping.

kubectl
error: deployment "api" exceeded its progress deadline

Common causes

New pods never reach Ready

Readiness probes failing, slow image pulls, OOMKills, or crashes keep the new ReplicaSet from reaching the available threshold before the deadline.

Scheduling or quota blocks the new pods

Insufficient CPU/memory, taints, or a quota cap leaves new pods Pending so the rollout makes no progress.

How to fix it

Find why the new pods are not progressing

The rollout failure is downstream of a pod problem; inspect the newest ReplicaSet pods.

Terminal
kubectl rollout status deploy/api
kubectl get pods -l app=api
kubectl describe deploy api | grep -A5 Conditions

Fix the pod issue, then re-roll

  1. Resolve the root cause (probe, image pull, resources, crash) found above.
  2. Re-run the deploy; if the underlying cause was transient (slow pull/rollout), a re-run often succeeds.
  3. If genuinely failed, kubectl rollout undo deploy/api to revert while you fix forward.

How to prevent it

  • Set progressDeadlineSeconds to a realistic value for your boot time.
  • Gate deploys on a healthy readiness signal so failures surface fast.
  • Pre-pull large images or use a registry cache to keep rollouts under the deadline.

Related guides

Tired of flaky CI? Latchkey auto-heals failed jobs and retries them for you. Start free →