Safeguard
Security Guides•

Mixed versions during a rolling deploy: how long is acceptable?

A rolling update briefly runs old and new pods together. That is normal. A mix that stays for hours is drift. Here is how to tell and what to check.

Safeguard Security Team
3 min read

A rolling deploy runs old and new versions side by side for a short time by design. Minutes are normal. A mix that persists for hours or days is drift, caused by a stuck rollout, pinned nodes, or cached images, and it means the dependencies you scanned are not the only ones running.

What a rolling update does

The Kubernetes Deployment documentation describes the process: a new ReplicaSet is created and scaled up while the old one is scaled down, so pods are replaced at a controlled rate. In the documentation's example, the end state is three available replicas in the new ReplicaSet and the old one scaled to zero. It also notes that Kubernetes does not count terminating pods when calculating available replicas.

During the middle of that process, both versions serve traffic. That is expected, and your application has to tolerate it.

When a mix becomes drift

ObservationLikely meaning
Old and new pods for a few minutesNormal rollout
Rollout paused or failing, old pods still servingStuck deploy
New pods crash looping, old ones kept aliveFailed release hiding behind healthy old pods
Same deployment, different image content on different nodesTag moved or cache served an older image
Old ReplicaSet scaled above zero long after rolloutManual scaling or a stale autoscaler setting

The documentation also warns that if pods are crash looping and rollouts keep being triggered, a Deployment may never reach a complete state. A half finished rollout looks like success in a quick check.

What to check after every deploy

  1. Read the image identifier of every running pod, and confirm only the new digest appears.
  2. Confirm the old ReplicaSet has zero replicas.
  3. Check that rollout status reports complete, not just started.
  4. If you use canaries on purpose, record the intended split and an end time.

Security angle

If the old version has a known vulnerability, every minute it runs matters, and a stuck rollout leaves it serving users. Alert when a rollout exceeds its expected duration. Also remember that two versions share a database, queue, or cache, so compatibility problems can look like security incidents.

Reducing mixed state

  • Reference images by digest, so nodes cannot pull different content under one tag. See tag or digest.
  • Set a progress deadline and alert on it.
  • Keep rollout history so you can compare versions.

Try it yourself

Click through it at your own pace, or open it full screen.

Look at how monitoring reports state over time. A post deploy check works the same way: compare what runs now with what you approved.

What Safeguard does here

Safeguard scans container images and monitors them, so you can see which image versions carry which findings. Try the free scan at gold.safeguard.sh/scan.

Quick check

Is a canary release drift?

Not if it is intentional, has an owner, and ends on a schedule. Unplanned splits are drift.

How long is too long?

Longer than your usual rollout time plus a margin. Set the threshold from your own history.

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.