Upgrade Kubernetes with kubeadm

by Taylor
0 comment

How to upgrade kubernetes master node with kubeadm

Example in 1.29 -> 1.30

but will applied to all major version updates.

You should upgrade one by one, not the version quantum jump(ex 1.29 -> 1.33). That will kill your master node.

Heads up! If you make mistake in this steps, you will spend much more time to recover that.

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


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

// Then change major version of the repository
// ex 1.29 -> 1.30

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

Then

apt update

// Determine what version you should to upgrade.
apt-cache madison kubeadm

   kubeadm | 1.30.13-1.1 | https://pkgs.k8s.io/core:/stable:/v1.30/deb  Packages
   kubeadm | 1.30.12-1.1 | https://pkgs.k8s.io/core:/stable:/v1.30/deb  Packages
   kubeadm | 1.30.11-1.1 | https://pkgs.k8s.io/core:/stable:/v1.30/deb  Packages
   kubeadm | 1.30.10-1.1 | https://pkgs.k8s.io/core:/stable:/v1.30/deb  Packages
   kubeadm | 1.30.9-1.1 | https://pkgs.k8s.io/core:/stable:/v1.30/deb  Packages
   kubeadm | 1.30.8-1.1 | https://pkgs.k8s.io/core:/stable:/v1.30/deb  Packages
   kubeadm | 1.30.7-1.1 | https://pkgs.k8s.io/core:/stable:/v1.30/deb  Packages
   kubeadm | 1.30.6-1.1 | https://pkgs.k8s.io/core:/stable:/v1.30/deb  Packages
   kubeadm | 1.30.5-1.1 | https://pkgs.k8s.io/core:/stable:/v1.30/deb  Packages
   kubeadm | 1.30.4-1.1 | https://pkgs.k8s.io/core:/stable:/v1.30/deb  Packages
   kubeadm | 1.30.3-1.1 | https://pkgs.k8s.io/core:/stable:/v1.30/deb  Packages
   kubeadm | 1.30.2-1.1 | https://pkgs.k8s.io/core:/stable:/v1.30/deb  Packages
   kubeadm | 1.30.1-1.1 | https://pkgs.k8s.io/core:/stable:/v1.30/deb  Packages
   kubeadm | 1.30.0-1.1 | https://pkgs.k8s.io/core:/stable:/v1.30/deb  Packages

// I will select the 1.30.13-1.1
apt-mark unhold kubeadm && \
apt update && apt install -y kubeadm='1.30.13-*' && \
apt-mark hold kubeadm

// After success to install kubeadm
// Make plan to upgrade
kubeadm upgrade plan

You can now apply the upgrade by executing the following command:

	kubeadm upgrade apply v1.30.13

_____________________________________________________________________

// Then
kubeadm upgrade apply v1.30.13

[upgrade/version] You have chosen to change the cluster version to "v1.30.13"
[upgrade/versions] Cluster version: v1.29.15
[upgrade/versions] kubeadm version: v1.30.13
[upgrade] Are you sure you want to proceed? [y/N]: y

// After some minutes, you can see this message

[upgrade/successful] SUCCESS! Your cluster was upgraded to "v1.30.13". Enjoy!


// Then we will upgrade kubelet and kubectl
// First, drain the node
kubectl drain your-node-name --ignore-daemonsets

// Upgrade kubelet and kubectl
sudo apt-mark unhold kubelet kubectl && \
sudo apt-get update && sudo apt-get install -y kubelet='1.30.13-*' kubectl='1.30.13-*' && \
sudo apt-mark hold kubelet kubectl

// Then restart the services
sudo systemctl daemon-reload
sudo systemctl restart kubelet

// Then make node to available to run pods
kubectl uncordon your-node-name

Congraturation!

Problem solver

If you having problem with GPG key when trying apt update after changes kubernetes repository url, try this.

curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.33/deb/Release.key | gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg

chmod 644 /etc/apt/keyrings/kubernetes-apt-keyring.gpg

If you failed to upgrade with kubeadm and your node not back to normal automatically, please check this document and recover it.

https://v1-30.docs.kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/#recovering-from-a-failure-state

You may also like

Leave a Comment