kubectl "deployment ... exceeded its progress deadline" in CI - Fix it
A Deployment tracks how long it has gone without progress. If new pods do not reach Available within progressDeadlineSeconds (default 600), the controller sets a ProgressDeadlineExceeded condition and kubectl rollout status returns non-zero, failing the deploy.
What this error means
A kubectl rollout status deployment/api step fails with error: deployment "api" exceeded its progress deadline. The new ReplicaSet has pods that never became Ready.
Waiting for deployment "api" rollout to finish: 1 out of 3 new replicas have been updated...
error: deployment "api" exceeded its progress deadlineCommon causes
New pods never become Ready
The new pods crash, fail readiness probes, cannot pull their image, or cannot schedule, so the Deployment makes no progress.
The deadline is shorter than a slow but healthy start
A genuinely slow boot (large image, warm-up) exceeds a tight progressDeadlineSeconds, so a healthy rollout is reported as failed.
How to fix it
Find why the new pods are not progressing
- Inspect the new ReplicaSet pods for their real status.
- Read events and logs for crashes, probe failures, or image-pull errors.
- Fix the underlying pod failure, then re-run the rollout.
kubectl rollout status deployment/api --timeout=300s
kubectl get pods -l app=api
kubectl describe deployment/api | sed -n '/Conditions/,/Events/p'Tune the deadline to a realistic value
If the workload is healthy but slow, raise progressDeadlineSeconds rather than masking failures.
spec:
progressDeadlineSeconds: 900How to prevent it
- Set readiness probes so progress reflects real health.
- Right-size
progressDeadlineSecondsfor the workload's start time. - Surface the failing pod status when a rollout times out.