Upgrade Kubernetes with kubeadm
Upgrade (1.25 > 1.26) to Version 1.26.x is just an example. Do not copy paste like a maniac! :D
Upgrade Packages
- Add Version you want to upgrade to
Bash
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.26/deb/ /" | sudo tee /etc/apt/sources.list.d/kubernetes.list
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.26/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
Master Main
- Check available versions and pick (the lastest recommended)
- Upgrade kubeadmin and hold
Bash
sudo apt-mark unhold kubeadm && \
sudo apt-get update && sudo apt-get install -y kubeadm='1.26.15-1.1' && \
sudo apt-mark hold kubeadm
- Check | dry run
- Upgrade master cluster
- Drains the node (evict pods) and make it unschedulable
- Update kubelet and kubectl
Bash
sudo apt-mark unhold kubelet kubectl && \
sudo apt-get update && sudo apt-get install -y kubelet='1.26.15-1.1' kubectl='1.26.15-1.1' && \
sudo apt-mark hold kubelet kubectl
- This will apply the upgrade
- Make the node available again
- done!
Workers
- Add Version you want to upgrade to
Bash
echo "deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.26/deb/ /" | sudo tee /etc/apt/sources.list.d/kubernetes.list
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.26/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
Bash
sudo apt-mark unhold kubeadm && \
sudo apt-get update && sudo apt-get install -y kubeadm='1.26.15-1.1' && \
sudo apt-mark hold kubeadm
- It is mostly the same as upgrading master node except this command
- Drain
- Upgrade kublet | Final step