Skip to content

5.2 Kubernetes Releases & Cluster Upgrade

1️⃣ Kubernetes Releases

Check Cluster Version

kubectl get nodes

Example:

  • controlplane β†’ v1.33.0
  • worker nodes β†’ v1.33.0

Note

Kubernetes follows Semantic Versioning: vMAJOR.MINOR.PATCH


Version Structure

Example: v1.33.0

  • Major (1) β†’ Rare architectural changes
  • Minor (33) β†’ New features & improvements
  • Patch (0) β†’ Bug fixes & security fixes

Abstract

Minor releases add features.
Patch releases improve stability and security.


Release Lifecycle

Alpha

  • Experimental
  • Disabled by default
  • Not production ready

Beta

  • Stable feature set
  • Enabled by default
  • Suitable for testing

Stable (GA)

Warning

Never enable Alpha features in production.


Support Policy

Kubernetes supports only the latest 3 minor versions.

If latest = 1.34
Supported = 1.34, 1.33, 1.32

Danger

Running unsupported versions exposes clusters to security and compatibility risks.


2️⃣ Version Skew Policy

If kube-apiserver = version X:

  • controller-manager β†’ X or X-1
  • kube-scheduler β†’ X or X-1
  • kubelet β†’ X-1 or X-2
  • kube-proxy β†’ X-1 or X-2
  • kubectl β†’ X-1, X, or X+1

Warning

No core component (except kubectl) may be higher than kube-apiserver.

Success

Version skew allows rolling, zero-downtime upgrades.


3️⃣ Production Upgrade Strategy

Golden Rules

Abstract

  • Upgrade one minor version at a time
  • Upgrade control plane first
  • Upgrade workers next
  • Backup etcd before upgrade
  • Review release notes

Control Plane Upgrade Behavior

  • API server briefly unavailable
  • Worker nodes continue serving traffic
  • Applications remain online
  • Management operations paused temporarily

4️⃣ Worker Upgrade Strategies

❌ All Nodes Together

  • Downtime occurs
  • Not recommended

βœ… Rolling Upgrade

  1. Drain node
  2. Upgrade node
  3. Restart kubelet
  4. Uncordon
  5. Repeat

βœ… Blue/Green Nodes

  • Add new upgraded nodes
  • Migrate workloads
  • Remove old nodes

5️⃣ Cluster with kubeadm Upgrade Workflow (v1.33 β†’ v1.34 Example)

This example demonstrates upgrading from v1.33.0 to v1.34.0.


πŸ”Ή On Control Plane Node

Drain Node (Before Upgrade)

kubectl drain controlplane --ignore-daemonsets --delete-emptydir-data

Tip

Draining safely evicts workloads and prevents new pods from scheduling.


Step 1 β€” Update Kubernetes APT Repository

vim /etc/apt/sources.list.d/kubernetes.list

Update to:

deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.34/deb/ /

Then:

apt update

Step 2 β€” Verify Available kubeadm Version

apt-cache madison kubeadm

Install correct version:

apt-get install kubeadm=1.34.0-1.1

Step 3 β€” Upgrade Controlplane

kubeadm upgrade plan v1.34.0
kubeadm upgrade apply v1.34.0

Note

This may take a few minutes.


Step 4 β€” Upgrade kubelet

apt-get install kubelet=1.34.0-1.1
systemctl daemon-reload
systemctl restart kubelet

Verify:

kubectl get nodes

Uncordon Node (After Upgrade)

kubectl uncordon controlplane

πŸ”Ή On Worker Node (node01)

Login:

ssh node01

Drain Node (Before Upgrade)

kubectl drain node01 --ignore-daemonsets --delete-emptydir-data

Step 1 β€” Update Repository

vim /etc/apt/sources.list.d/kubernetes.list

Update to:

deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.34/deb/ /

Then:

apt update

Step 2 β€” Upgrade kubeadm

apt-get install kubeadm=1.34.0-1.1

Step 3 β€” Upgrade Node Configuration

kubeadm upgrade node

Step 4 β€” Upgrade kubelet

apt-get install kubelet=1.34.0-1.1
systemctl daemon-reload
systemctl restart kubelet

Exit from worker node:

exit

Uncordon Node (After Upgrade)

kubectl uncordon node01
Repeat for remaining worker nodes (rolling approach).


6️⃣ Production Best Practices

Recommended

  • Maintain N+1 capacity
  • Use PodDisruptionBudgets
  • Upgrade sequentially
  • Test in staging first
  • Monitor workloads after upgrade
  • Keep rollback plan

7️⃣ Production Do & Don’t

βœ… DO

Tip

  • Upgrade one minor version at a time
  • Drain worker nodes before upgrade
  • Validate node status after upgrade
  • Monitor deprecated APIs

❌ DON'T

Danger

  • Don’t skip minor versions
  • Don’t upgrade all workers at once
  • Don’t ignore version skew rules
  • Don’t upgrade without etcd backup

8️⃣ Quick Upgrade Summary

Abstract

  1. Backup etcd
  2. Update repo to next minor version
  3. Upgrade kubeadm
  4. kubeadm upgrade plan
  5. kubeadm upgrade apply
  6. Upgrade kubelet
  7. Rolling upgrade workers
  8. Validate cluster health

Final Production Takeaway

Quote

Safe Kubernetes upgrades are planned, sequential, and availability-focused.

Control Plane β†’ Rolling Workers β†’ Validate.