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.

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.

Related guides

References

Latchkey auto-heals failures like this one - detected, fixed, and retried without you. Start free → 30-day trial · No credit card