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.
error: deployment "api" exceeded its progress deadlineCommon 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.
kubectl rollout status deploy/api
kubectl get pods -l app=api
kubectl describe deploy api | grep -A5 ConditionsFix the pod issue, then re-roll
- Resolve the root cause (probe, image pull, resources, crash) found above.
- Re-run the deploy; if the underlying cause was transient (slow pull/rollout), a re-run often succeeds.
- If genuinely failed,
kubectl rollout undo deploy/apito 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.