2.0 KiB
Requirements:
- User with access to sudo
- Only Debian based devices
- Use vars to target specific kubeadm/let/ctl version
- DNS name must match the name of the node when using
kubectl get nodes
command - Host/Client that will execute this script requires to have
kubectl
configured to use the targeted kubernetes cluster. - https://docs.ansible.com/ansible/latest/collections/kubernetes/core/docsite/kubernetes_scenarios/k8s_intro.html | ansible-galaxy collection install kubernetes.core [0]
[0] pacman -S python-kubernetes https://stackoverflow.com/questions/60866755/ansible-k8s-module-failed-to-import-the-required-python-library-openshift-on
Order:
- Update repositories [-3]
- Check available versions to upgrade to and update the config accordingly [-2]
- Check if applied CRD work on the desired Kubernetes version [-1]
- Backup (if available, as per the moment manual since it's not a main concern) [0]
- Upgrade Kubeadm [1]
- Call upgrade [2]
- Drain node [3]
- Update kubelet/kubectl versions [4]
- Reboot services [5]
- Upgrade system cause one needs it from time to type [6]
- Uncordon node [7]
----- Done with all hosts
- Upgrade CNI
[-3] https://kubernetes.io/blog/2023/08/15/pkgs-k8s-io-introduction/
[-2] apt update apt-cache madison kubeadm | head -n 5
[-1] (This is mine. comparing to kubernetes 1.28.5)
- Calico v3.26.3 (v3.26.4 available)
- Istio 1.18.2 (v1.20 available)
- [?] MetalLb v0.13.10 (v0.13.12 available) *Didn't find anything regarding the matter, so going to assume yes and see what happens.
- CertManager v1.13.1 (v1.13.3 available)
[0] Proxmox stuff/VMs
[1]
apt-mark unhold kubeadm &&
apt-get update && apt-get install -y kubeadm='1.28.x-*' &&
apt-mark hold kubeadm
[2] sudo kubeadm upgrade node
[3] kubectl drain $NODE
[4]
apt-mark unhold kubelet kubectl &&
apt-get update && apt-get install -y kubelet='1.28.x-' kubectl='1.28.x-' &&
apt-mark hold kubelet kubectl
[5] sudo systemctl daemon-reload sudo systemctl restart kubelet
[6] usual apt-get update > upgrade > reboot
[7] kubectl uncordon