4. Cluster upgrade

First, upgrade the control plane node.

Drain the control plane node.

kubectl drain <control plane node name> --ignore-daemonsets

Upgrade kubeadm.

sudo apt-get update && \
sudo apt-get install -y --allow-change-held-packages kubeadm=1.20.2-00

kubeadm version

Plan the upgrade.

sudo kubeadm upgrade plan v1.20.2

Upgrade the control plane components.

sudo kubeadm upgrade apply v1.20.2

Upgrade kubelet and kubectl on the control plane node.

sudo apt-get update && \
sudo apt-get install -y --allow-change-held-packages kubelet=1.20.2-00 kubectl=1.20.2-00

Restart kubelet.

sudo systemctl daemon-reload

sudo systemctl restart kubelet

Uncordon the control plane node.

kubectl uncordon <control plane node name>

Verify that the control plane is working.

kubectl get nodes

Upgrade the worker nodes.

Note: In a real-world scenario, you should not perform upgrades on all worker nodes at the same time. Make sure enough nodes are available at any given time to provide uninterrupted service.

Run the following on the control plane node to drain worker node 1:

kubectl drain <worker 1 node name> --ignore-daemonsets --force

Log in to the first worker node, then Upgrade kubeadm.

sudo apt-get update && \
sudo apt-get install -y --allow-change-held-packages kubeadm=1.20.2-00

kubeadm version

Upgrade the kubelet configuration on the worker node.

sudo kubeadm upgrade node

Upgrade kubelet and kubectl on the worker node.

sudo apt-get update && \
sudo apt-get install -y --allow-change-held-packages kubelet=1.20.2-00 kubectl=1.20.2-00

Restart kubelet.

sudo systemctl daemon-reload

sudo systemctl restart kubelet

From the control plane node, uncordon worker node 1.

kubectl uncordon <worker 1 node name>

Repeat the upgrade process for worker node 2.

From the control plane node, drain worker node 2.

kubectl drain <worker 2 node name> --ignore-daemonsets --force

On the second worker node, upgrade kubeadm.

sudo apt-get update && \
sudo apt-get install -y --allow-change-held-packages kubeadm=1.20.2-00

kubeadm version

Perform the upgrade on worker node 2.

sudo kubeadm upgrade node

sudo apt-get update && \
sudo apt-get install -y --allow-change-held-packages kubelet=1.20.2-00 kubectl=1.20.2-00

sudo systemctl daemon-reload

sudo systemctl restart kubelet

From the control plane node, uncordon worker node 2.

kubectl uncordon <worker 2 node name>

Verify that the cluster is upgraded and working.

kubectl get nodes

Last updated

Was this helpful?