diff --git a/src/SUMMARY.md b/src/SUMMARY.md index bafc855..afb15ca 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -32,6 +32,7 @@ - [Ops](./ops/main.md) - [k8s](./ops/k8s/main.md) - [kubectl](./ops/k8s/kubectl.md) + - [upgrade](./ops/k8s/upgrade.md) - [macOS](./ops/macos/main.md) - [iterm](./ops/macos/iterm.md) - [GNU/Linux](./ops/gnulinux/main.md) diff --git a/src/ops/k8s/upgrade.md b/src/ops/k8s/upgrade.md new file mode 100644 index 0000000..0876332 --- /dev/null +++ b/src/ops/k8s/upgrade.md @@ -0,0 +1,63 @@ +# Cluster Upgrade + +## Versions + +`vMajor.Minor.Patch` semantic versioning + +K8S compatibility is as follow : current and n-2 version are supported. + +**Always upgrade minor to minor releases**. + +## kubeadm + +### Check latest/upgradable version + +```shell +kubeadm upgrade plan +``` + +## Master node upgrade + +### Drain and mark it at Unschedulable + +```shell +kubectl drain master +``` + +`kubectl get nodes` to verify that master node is unschedulable + +### kubeadm update + +```shell +apt install kubeadm=X.Y.Z-00 +``` + +`kubeadm version` to ensure version number + +### Node update + +```shell +kubeadm upgrade apply vX.Y.Z +``` + +`kubectl version` to validate + +### Update kubelet + +```shell +apt install kubelet=X.Y.Z-00 +``` + +`kubectl get nodes` to validate + +### Mark master node as schedulable + +```shell +kubectl uncordon master +``` + +## Worker nodes upgrade + +Repeat the same actions done on master for each worker node + +🎉