Skip to main content

Myth: Kubernetes Supports In-Place Application Upgrades

In traditional server- or VM-based environments, upgrading an application usually meant updating binaries or packages on the same machine and restarting the process. The application instance remained the same; only its version changed.

When engineers first encounter Kubernetes rollouts, they often assume a similar mechanism exists—that Kubernetes “upgrades” the application while it continues running on the same instance.

Why This Myth Exists?

This myth persists because:

  • Rolling updates look visually similar to in-place upgrades

  • The term upgrade is used loosely in documentation and conversations

  • Application endpoints remain stable during rollouts

  • Traffic continues to flow while versions change

These surface-level behaviors hide what Kubernetes is actually doing underneath

The Reality

Kubernetes does not support in-place application upgrades.

  • A container image cannot be changed once a container is running
  • A Pod’s specification is immutable after creation
  • Kubernetes never modifies a running Pod

What Kubernetes calls an upgrade is actually:

  • Termination of existing Pods
  • Creation of new Pods with a new specification
  • Gradual traffic shift managed by controllers

Every version change involves replacement, not mutation.

Experiment & Validate

Step 1: Deploy an Application

Create a Deployment with a simple container image.

kubectl create deployment upgrade-demo --image=nginx:1.25

Wait for the Pod to be ready:

kubectl get pods -l app=upgrade-demo

Note the Pod name and UID.

Step 2: Trigger an “Upgrade”

Update the container image version:

kubectl set image deployment/upgrade-demo nginx=nginx:1.26

Step 3: Observe the Rollout

Watch Pods during the update:

kubectl get pods -l app=upgrade-demo -w

You will see:

  • Old Pod terminating
  • New Pod being created
  • New Pod has a different name and UID

Step 4: Verify Pod Replacement

Check the Deployment history:

kubectl rollout history deployment/upgrade-demo

Kubernetes created a new ReplicaSet, not an upgraded Pod.

Key Takeaways

  • Kubernetes never upgrades a running application instance

  • Pods and containers are immutable

  • Rolling updates are controlled replacements

  • Application continuity is achieved through redundancy, not mutation

  • Applications must be designed to tolerate replacement at any time

Did this myth change how you understand Kubernetes?
00
Authored and Debunked By
Rajesh Deshpande
Rajesh DeshpandeKubernetes Mythologist
Cloud-Native Platform Architect
More →
Reviewed and Verified By
Snehal Joshi
Snehal JoshiKubernetes Mythicist
Cloud-Native Architect (DevOps)
More →