kube-apiserver
must be at the highest version compared to other components, except kubectl
which can be one minor version above.k get nodes
command shows the version of kubelet
running on each node.First the master node is upgraded, during which the control plane components are unavailable. The worker nodes keep functioning and the application is up. While the master node is getting updated, all management functions are down. We cannot run kubectl
commands as kube-apiserver
is down. If a pod were to crash, a new one will not be spawned as the kube-controller-manager
is down.
Once the master node has been upgraded, we need to upgrade the worker nodes (upgrade the k8s components running on them). As the worker nodes serve traffic, there are various strategies to upgrade them.
Upgrade all the worker nodes at once. This will lead to downtime as no pods will be running during the upgrade.
Move the pods of the first node to the remaining nodes and upgrade the first node. Then repeat the same for the rest of the nodes.