Deployment rollout stuck — progress deadline exceeded
kubectl rollout status hangs on 'Waiting for rollout to finish'
Focused incident mode — strips away everything but this runbook.
Symptoms
- kubectl rollout status hangs on 'Waiting for rollout to finish'
- New pods never become Ready
- Rollout stuck at partial completion
Evidence to grab
Collect these artifacts before you change anything — they prove (or rule out) each cause.
New pod status
kubectl get pods -n <namespace> -l <selector> --sort-by=.metadata.creationTimestampDeployment conditions
kubectl describe deployment <name> -n <namespace> | tail -20
Diagnostic flow
Run the steps in order, marking each claim confirmed or refuted. The evidence you gather feeds the ranked causes below.
Guided decision tree is ready.
Steps with commands, expected output, and pass/fail branches.
Ranked root causes
Evidence checklist
- describe shows Readiness probe failed
- New pod logs show startup errors
Confirm before fixing
kubectl logs <new-pod> -n <namespace> --previousRead the failed pod's logs
Fix
kubectl rollout undo deployment/<name> -n <namespace>Roll back to the last good revision
Expected: deployment.apps/<name> rolled back
Resolution runbook
Apply from top to bottom after the cause is confirmed. Review every command before running it — risk tags are shown on each.
kubectl rollout status deployment/<name> -n <namespace>Confirm it is actually stuck
kubectl get pods -n <namespace> -l <selector> --sort-by=.metadata.creationTimestampIdentify the newest pod
kubectl logs <new-pod> -n <namespace> --previousRead why readiness fails
kubectl rollout undo deployment/<name> -n <namespace>Roll back if you need to restore service immediately
kubectl rollout pause deployment/<name> -n <namespace>Pause to keep investigating a partially rolled-out state
Prevention
- Set progressDeadlineSeconds to fail loudly instead of hanging.
- Ship with correct readiness probes; test images in a review/staging namespace first.
- Use canary/blue-green deployments for high-risk workloads.
- Alert on rollout failing via kubernetes_statefulset/deployment condition metrics.
Related runbooks
Same stack, same failure family — worth a skim.
Commands marked READ CHANGE DESTRUCTIVE — never run DESTRUCTIVE commands against production data you cannot restore. Copy → verify → execute.