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!**