Contents

Kubernetes Cluster Upgrade Process

Kubernetes Core Components Versioning Rule

ComponentVersioning RuleExample
kube-apiserverXv1.10
kube-schedulerX-1v1.9 or v1.10
kubeletX-2v1.8 or v1.9 or v.110
kube-proxyX-2v1.8 or v1.9 or v.110
kubectlX+1 > X-1v1.10

Kubernetes Supported Versions

Versions
Kubernetes support recent 3 minor versions.
VersionWhether to Support
v1.10Un-Supported
v1.11Un-Supported
v1.12Supported
v1.13Supported
v1.14Supported

Upgrade Recommendation Process

Recommendation
Kubernetes recommend upgrading to one minor up version at a time.
At this time, let’s assume v1.10 to v1.14

First(v1.10 -> v1.11)

Second(v1.11 -> v1.12)

Third(v1.12 -> v1.13)

Fourth(v1.13 -> v1.14)

Upgrade Methods

Cloud Services

Note
You just need few clicks.

Use kubeadm

1
kubeadm upgrade plane
1
kubeadm upgrade apply

The Hard Way

Note
This means, manual upgrade.

Upgrade with kubeadm

Strategy

Common
All strategies is to upgrade Master Node first.
At Once
After upgrading Master Node, upgrade all Worker Nodes at once.
Each Worker Node
After upgrading Master Node, upgrade A Worker Node at a time.
Replace Worker Node
After upgrading Master Node, create A New Worker Node and exchange with exist A Old Version Worker Node.

Upgrade Process

Upgrade Process
Check this official document

Check Token

1
kubeadm token list

Check OS

1
cat /etc/*release*

Version Current Check

1
kubectl get nodes

Find Upgrade Version Using OS Package Manager

Ubuntu

1
2
3
4
apt update
apt-cache madison kubeadm
# find the latest 1.21 version in the list
# it should look like 1.21.x-00, where x is the latest patch

CentOS

1
2
3
yum list --showduplicates kubeadm --disableexcludes=kubernetes
# find the latest 1.21 version in the list
# it should look like 1.21.x-0, where x is the latest patch

Upgrade kubeadm

Using OS Package Manager

Ubuntu

1
2
3
apt-mark unhold kubeadm && \
apt-get update && apt-get install -y kubeadm=1.21.x-00 && \
apt-mark hold kubeadm

CentOS

1
yum install -y kubeadm-1.21.x-0 --disableexcludes=kubernetes
Check kubeadm Version
1
kubeadm version
Check kubeadm Upgrade Plan
1
kubeadm upgrade plan
Apply Upgrade kubeadm
1
2
3
4
5
# On Master Node
sudo kubeadm upgrade apply v1.21.x

# On Worker Nodes
sudo kubeadm upgrade node

drain Node

1
kubectl drain master --ignore-daemonsets

Upgrade kubelet and kubectl

Using OS Package Manager

Ubuntu

1
2
3
apt-mark unhold kubelet kubectl && \
apt-get update && apt-get install -y kubelet=1.21.x-00 kubectl=1.21.x-00 && \
apt-mark hold kubelet kubectl

CentOS

1
yum install -y kubelet-1.21.x-0 kubectl-1.21.x-0 --disableexcludes=kubernetes
Restart kubelet
1
2
sudo systemctl daemon-reload
sudo systemctl restart kubelet

uncordon Node

1
kubectl uncordon master

Simple Process

drain Node

1
kubectl drain <node-name>

Check Upgrade Plan

1
kubeadm upgrade plan

Upgrade kubeadm

1
apt-get upgrade -y kubeadm=1.12.0-00

Apply kubeadm

1
2
3
4
5
# On Master Node
kubeadm upgrade apply v1.12.0

# On Worker Nodes
kubeadm upgrade node

Check Nodes

1
kubectl get nodes

Upgrade kubelet Component

1
apt-get upgrade -y kubelet=1.12.0-00

Restart kubelet Component

1
systemctl restart kubelet

uncordon Node

1
2
# On Master Node
kubectl uncordon <node-name>

Simple Diagram