Safeguard
Security Guides•

How does Kubernetes detect a stuck rollout, and what then?

Kubernetes marks a stalled Deployment after progressDeadlineSeconds but does not roll back for you. See the signals, defaults and what to automate.

Safeguard Security Team
4 min read

Kubernetes detects a stalled rollout with the progressDeadlineSeconds field on a Deployment. When the deadline passes without progress, the controller records a Progressing condition with status False. It reports the problem. It does not undo the release, so you need your own rollback trigger.

What the controller does by default

A rolling update replaces pods gradually. The Kubernetes documentation says the controller stops a bad rollout automatically in one sense: it stops scaling up the new ReplicaSet, and this depends on the rollingUpdate parameters, especially maxUnavailable, which defaults to 25 percent. The old pods keep serving, so users are mostly protected.

What it does not do is decide the release is wrong and go back. The documentation's own walkthrough shows a human noticing the stuck rollout and running a rollback.

What counts as stuck

The documentation lists common causes of a rollout that cannot progress: insufficient quota, readiness probe failures, image pull errors, insufficient permissions, limit ranges and application runtime misconfiguration. Several of these are exactly what a deploy-time control produces on purpose.

CausePossible security meaning
Image pull errorsImage not in the approved registry, or signature check failed upstream
Insufficient permissionsA tightened RBAC or service account change
Limit ranges and quotaA resource guardrail doing its job
Admission rejection of podsPolicy denied the new pod, visible in ReplicaSet events
Readiness probe failuresOften a bug, occasionally a blocked dependency

A rollout that stalls right after you add a policy is usually not a platform fault. Read the events before you assume so.

Set a deadline you can live with

The documentation shows setting the field with a patch, for example 600 seconds for ten minutes. Pick a value that matches how long a healthy rollout takes for that service, plus margin. Too short and slow starts look like failures. Too long and a blocked security fix waits unnoticed.

kubectl patch deployment/web -p '{"spec":{"progressDeadlineSeconds":600}}'
kubectl rollout status deployment/web

kubectl rollout status waits and exits with a failing code when the deadline is exceeded, so a CI or deploy job can use it as a check.

Turn the signal into an action

  1. Make your pipeline wait on rollout status, and fail the job on a stall.
  2. On failure, collect ReplicaSet events and pod events as evidence before anything is cleaned up.
  3. Decide in advance whether the job rolls back automatically or pages a person. For security fixes, many teams prefer a person, because an automatic undo may reinstall the vulnerable version.
  4. Record the outcome in the deployment record.

Progressive delivery tools can automate analysis and abort, but the principle is the same: define the failure condition before the release, not during it.

Where Safeguard fits

Safeguard's continuous monitoring watches your projects for new findings after release, so a stalled fix and a newly disclosed issue show up in the same view. Its policies and gates define what is allowed to ship in the first place.

Try it yourself

Click through it at your own pace, or open it full screen. Watch how a change in findings appears after something is already deployed.

Quick check

Does Kubernetes roll back a failed rollout automatically?

No. It stops scaling up the new ReplicaSet and reports the stall. Rolling back is a separate action you take or automate.

Where do I look first when a rollout stalls after a policy change?

Check ReplicaSet and pod events. Admission denials are reported there.

Sources

Last reviewed: 19 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.