Skip to content
tezvyn:

Stalled rollouts and progressDeadlineSeconds

Source: interviewHardHow cards are made

Summary

Understanding stalled rollouts.

Key points

With maxUnavailable respected, the rollout pauses partway and old Pods keep serving; progressDeadlineSeconds marks the Deployment as failed after no progress for that window.

What's really being asked

Failure semantics of rollouts: the system is designed to protect availability when a new version is broken, and to surface a clear failure signal.

The full answer

When new Pods fail readiness, the rolling update stalls. Because maxUnavailable bounds how many old Pods can be removed, and removal only proceeds as new Pods become Ready, the controller stops making progress while keeping the old, healthy Pods running. So the service stays up on the previous version. The Deployment sits in a Progressing state until progressDeadlineSeconds elapses with no progress, at which point the controller sets the Progressing condition to False with reason ProgressDeadlineExceeded. This does not automatically roll back; it marks the rollout failed so CI/CD pipelines and operators can react.

The mistakes people make

Assuming Kubernetes automatically reverts on failure; you must run kubectl rollout undo. Thinking old Pods are deleted regardless, which would cause an outage. Confusing progressDeadlineSeconds with a probe timeout; it measures lack of overall rollout progress, not a single check.

What usually comes next

How do you detect a failed rollout in automation? kubectl rollout status returns a non-zero exit and reports ProgressDeadlineExceeded. How to recover? Roll back or fix and reapply. What disables the deadline? Setting it very high effectively disables failure detection.

A concrete example

A new image has a bad config and its Pods never pass readiness. With maxUnavailable 0, the controller brings up surge Pods that stay NotReady and never removes the old ones, so traffic continues on the old version. After progressDeadlineSeconds (say 600 seconds) of no progress, the Deployment is marked ProgressDeadlineExceeded, and the on-call engineer runs rollout undo.

Interview question

What does progressDeadlineSeconds do when new Pods in a rolling update never become Ready?

  • a.It forces the old Pods to be deleted to make room
  • b.It restarts each failing Pod after the deadline
  • c.It automatically rolls the Deployment back to the prior version
  • d.It marks the Deployment as failed (ProgressDeadlineExceeded) after that much time without progressCorrect
Why?

After no progress for that duration, the controller sets the Progressing condition to False with reason ProgressDeadlineExceeded. It does not auto-rollback, delete old Pods, or restart the failing ones.

Just read this? Test yourself on what you have been reading.

Read the original → kubernetes.io

You just looked this up. Could you explain it out loud?

That is the part interviews actually test. Tezvyn takes questions like this one and gives you what the interviewer is really checking, the answer that lands, and the mistake that ends the conversation, in the four minutes before your next meeting.

The iPhone app is on the way

We are building it. Until it lands, nothing here is held back from you: every interview card, your saved cards, streaks and the job board all work in Safari, plus hundreds of free practice quizzes of thirty questions each. Sign in and it all carries over to the app the day it arrives.

Want it as an icon? Tap Share at the bottom of Safari, then Add to Home Screen. It opens full screen and the cards you have read stay available offline.

Get it on Google PlayiPhone app coming soon

We are hiring for this. Open roles that interview on kubernetes — each one lists the topics its interview covers.

See open roles