Kubernetes "deployment exceeded its progress deadline" in CI - Fix it
By Kaveh Alemi·Latchkey
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
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/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.
Frequently asked questions
What causes ""exceeded its progress deadline""?
Readiness probes failing, slow image pulls, OOMKills, or crashes keep the new ReplicaSet from reaching the available threshold before the deadline.
How do I fix "exceeded its progress deadline"?
The rollout failure is downstream of a pod problem; inspect the newest ReplicaSet pods.
Can Latchkey fix this automatically?
Yes. Latchkey runs your GitHub Actions on managed runners that detect this failure, apply the fix, and retry the job automatically - self-healing is on by default.