Kiedy aktualizować klaster Kubernetes?¶
Należy zwracać uwagę na releasy - ostatnie 3 wersje minor releasów (np. 1.16, 1.17 oraz 1.18) są supportowane. Potem, gdy pojawia się kolejna wersja (1.18) depricated staje się 1.16.
Jak aktualizować klaster?¶
Polecenia¶
U dostawcy chmury¶
Tutaj to bardzo prosto, wystarczy kliknąć w guziczek i gotowe.
kubeadm¶
Upgrade Control-plane¶
Tutaj należy:
- zaplanowanie i wyświetlenie możliwych aktualizacji, co zostanie zmienione:
- zaaktualizowanie właściwe klastra
Warning
kubeadm upgrade apply nie aktualizuje kubelet!
Należy samemu taką aktualizację przeprowadzić, on aktualizuje tylko Control Plane!
Info
Jeżeli wersja kubeadm jest stara to również należy ją podnieść!
Czyli należy podnieść wersję kubeadm:
kubelet:
I restartujemy usługę na każdym węźle:
Tutaj jest to dobrze udokumentowane: https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/
Upgrade Worker Node¶
Ustalamy wersję Kubernetesa do której będzie robiona aktualizacja, należy w tym pliku zmienić wersję klastra:
Oznaczamy węzeł jako Unschedulable, usuwamy wszystkie Pody z niego (przenosimy na inne węzły):
Aktualizujemy paczki po zmianie
Instalujemy wybraną wersję kubeadm (tutaj dla wersji 1.34.2-2.1.1):
sudo apt-mark unhold kubeadm && \
sudo apt-get update && sudo apt-get install -y kubeadm='1.34.2-*' && \
sudo apt-mark hold kubeadm
Upgradeujemy wersję kube-proxy, innych manifestów, dostosowujemy node do wersji control-plane:
Upgradeujemy wersję kubelet:
sudo apt-mark unhold kubelet kubectl && \
sudo apt-get update && sudo apt-get install -y kubelet='1.34.x-*' kubectl='1.34.x-*' && \
sudo apt-mark hold kubelet kubectl
Restartujemy kubelet:
Odznaczamy Node ze stanu Unschedulable -> Schedulable:
Jak aktualizować, jakie kroki podjąć?¶
Warning
Należy robić każdą wersję po kolei! Nie można więcej niż jedną wersję różnicy mieć na klastrze, jedna minor wersja po drugiej.
Kroki do podjęcia:
- Początkowo aktualizujemy Master Node, czekamy aż aktualizacja przebiegnie pomyślnie, wówczas robimy dalej na Worker Nodach.
- Aktualizację na Workerach można robić na dwa sposoby:
- Aktualizujemy stare węzły, pojedynczo, wyłączamy je z działania (drained, stan
NotSchedulable) i robimy to z kolejnymi - Dodajemy maszyny do klastra z nową już wersją, a stare node wywalamy z klastra
- Aktualizujemy stare węzły, pojedynczo, wyłączamy je z działania (drained, stan
Warning
Nie usuwaj tego pliku.
Może być wymagany przy buildzie.