From c611f55dca580656f90346d44d44905dbabe2034 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Petazzoni?= Date: Fri, 12 May 2023 07:23:36 +0200 Subject: [PATCH] =?UTF-8?q?=E2=8F=AB=20Update=20cluster=20upgrade=20sectio?= =?UTF-8?q?n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit We now go from 1.22 to 1.23. Updating to 1.22 was necessary because Kubernetes 1.27 deprecated kubeadm config v1beta2, which forced us to upgrade to v1beta3, which was only introduced in 1.22. In other words, our scripts can only install Kubernetes 1.22+ now. --- prepare-labs/lib/commands.sh | 2 +- prepare-labs/settings/admin-oldversion.env | 2 +- slides/k8s/cluster-upgrade.md | 87 +++++++++++++--------- 3 files changed, 55 insertions(+), 36 deletions(-) diff --git a/prepare-labs/lib/commands.sh b/prepare-labs/lib/commands.sh index bfe9bdd1..4fa6bca8 100644 --- a/prepare-labs/lib/commands.sh +++ b/prepare-labs/lib/commands.sh @@ -456,7 +456,7 @@ _cmd_kube() { pssh " sudo tee /etc/apt/preferences.d/kubernetes <It is confused by our manual upgrade of the API server! -Note 2: kubeadm itself is still version 1.20.15.. -
It doesn't know how to upgrade do 1.21.X. +Note 2: kubeadm itself is still version 1.22.1.. +
It doesn't know how to upgrade do 1.23.X. --- @@ -324,7 +324,7 @@ Note 2: kubeadm itself is still version 1.20.15.. - Upgrade kubeadm: ``` - sudo apt install kubeadm + sudo apt install kubeadm=1.27.0-00 ``` - Check what kubeadm tells us: @@ -335,28 +335,28 @@ Note 2: kubeadm itself is still version 1.20.15.. ] Problem: kubeadm doesn't know know how to handle -upgrades from version 1.20. +upgrades from version 1.22. -This is because we installed version 1.24 (or even later). +This is because we installed version 1.27. -We need to install kubeadm version 1.21.X. +We need to install kubeadm version 1.23.X. --- ## Downgrading kubeadm -- We need to go back to version 1.21.X. +- We need to go back to kubeadm version 1.23.X. .lab[ - View available versions for package `kubeadm`: ```bash - apt show kubeadm -a | grep ^Version | grep 1.21 + apt show kubeadm -a | grep ^Version | grep 1.23 ``` - Downgrade kubeadm: ``` - sudo apt install kubeadm=1.21.0-00 + sudo apt install kubeadm=1.23.0-00 ``` - Check what kubeadm tells us: @@ -366,23 +366,42 @@ We need to install kubeadm version 1.21.X. ] -kubeadm should now agree to upgrade to 1.21.X. +kubeadm should now agree to upgrade to 1.23.X. + +--- + +## Reverting our manual API server upgrade + +- First, we should revert our `image:` change + + (so that kubeadm executes the right migration steps) + +.lab[ + +- Edit the API server pod manifest: + ```bash + sudo vim /etc/kubernetes/manifests/kube-apiserver.yaml + ``` + +- Look for the `image:` line, and restore it to the original value + + (e.g. `v1.22.17`) + +- Wait for the control plane to come back up + +] --- ## Upgrading the cluster with kubeadm -- Ideally, we should revert our `image:` change - - (so that kubeadm executes the right migration steps) - -- Or we can try the upgrade anyway +- Now we can let kubeadm do its job! .lab[ - Perform the upgrade: ```bash - sudo kubeadm upgrade apply v1.19.8 + sudo kubeadm upgrade apply v1.23.0 ``` ] @@ -397,7 +416,7 @@ kubeadm should now agree to upgrade to 1.21.X. .lab[ -- Log into node `oldversion3` +- Log into node `oldversion2` - View available versions for package `kubelet`: ```bash @@ -406,7 +425,7 @@ kubeadm should now agree to upgrade to 1.21.X. - Upgrade kubelet: ```bash - sudo apt install kubelet=1.19.8-00 + sudo apt install kubelet=1.23.0-00 ``` ] @@ -464,9 +483,9 @@ kubeadm should now agree to upgrade to 1.21.X. ```bash for N in 1 2 3; do ssh oldversion$N " - sudo apt install kubeadm=1.21.14-00 && + sudo apt install kubeadm=1.23.0-00 && sudo kubeadm upgrade node && - sudo apt install kubelet=1.21.14-00" + sudo apt install kubelet=1.23.0-00" done ``` ] @@ -475,7 +494,7 @@ kubeadm should now agree to upgrade to 1.21.X. ## Checking what we've done -- All our nodes should now be updated to version 1.21.14 +- All our nodes should now be updated to version 1.23.0 .lab[ @@ -492,13 +511,13 @@ class: extra-details ## Skipping versions -- This example worked because we went from 1.20 to 1.21 +- This example worked because we went from 1.22 to 1.23 -- If you are upgrading from e.g. 1.16, you will have to go through 1.17 first +- If you are upgrading from e.g. 1.21, you will have to go through 1.22 first -- This means upgrading kubeadm to 1.17.X, then using it to upgrade the cluster +- This means upgrading kubeadm to 1.22.X, then using it to upgrade the cluster -- Then upgrading kubeadm to 1.18.X, etc. +- Then upgrading kubeadm to 1.23.X, etc. - **Make sure to read the release notes before upgrading!**