Hur man uppgraderar ett Kubernetes-kluster skapat med Kubeadm

Kubeadm är det officiella verktyget för att installera och underhålla ett kluster som är baserat på Kubernetes standarddistribution. Skapade kluster uppgraderar inte sig själva automatiskt och att inaktivera paketuppdateringar för Kubernetes-komponenter är en del av installationsprocessen. Det betyder att du måste migrera ditt kluster manuellt när en ny Kubernetes-version kommer.

I den här artikeln lär du dig stegen som ingår i en Kubernetes-uppgradering genom att gå igenom en övergång från v1.24 till v1.25 på Ubuntu 22.04. Processen är vanligtvis liknande för alla Kubernetes mindre utgåvor, men du bör alltid hänvisa till den officiella dokumentationen innan du börjar, ifall en ny utgåva har specialistkrav.

Identifiera den exakta versionen som ska installeras

Det första steget är att bestämma vilken version du ska uppgradera till. Du kan inte hoppa över mindre versioner – att gå direkt från v1.23 till v1.25 stöds inte, till exempel – så du bör välja den senaste patchversionen för den mindre versionen som följer ditt kluster nuvarande version.

Du kan upptäcka den senaste patchversionen med följande kommando:

$ apt- cachepolicy kubeadm | grep 1.25 1.25.1-00 500 1.25.0-00 500

Detta visar att 1.25.1-00 är den senaste versionen av Kubernetes v1.25. Ersätt 1.25 i kommandot med den mindre versionen som du ska flytta till.

Uppgradering av kontrollplanet

Fyll i det här avsnittet om maskinen som kör ditt kontrollplan. Rör inte arbetarnoderna ännu – de kan fortsätta använda sin nuvarande Kubernetes-version medan kontrollplanet uppdateras. Om du har flera kontrollplansnoder, kör den här sekvensen på den första och följ arbetsnodproceduren i nästa avsnitt om de andra.

Uppdatera Kubeadm

< p>Släpp först spärren på Kubeadm-paketet och installera den nya versionen. Ange den exakta versionen som identifierats tidigare så att Apt inte automatiskt tar tag i den senaste, vilket kan vara en mindre versionsbump som inte stöds.

$ sudo apt update $ sudo apt-mark unhold kubeadm $ sudo apt install -y kubeadm=1.25.1-00

Använd nu spärren igen så att apt-uppgraderingen inte levererar oönskade utgåvor i framtiden:

$ sudo apt-mark hold kubeadm kubeadm satt i paus

Verifiera att Kubeadm är nu den förväntade versionen:

$ kubeadm version –short kubeadm version: &version.Info{Major:”1″, Minor:”25″, GitVersion:”v1.25.1″…

Skapa uppgraderingsplanen

Kubeadm automatiserar uppgraderingsprocessen för kontrollplanet. Använd först kommandot uppgraderingsplan för att fastställa vilka versioner du kan migrera till. Detta kontrollerar ditt kluster för att säkerställa att det kan acceptera den nya versionen.

$ sudo kubeadm uppgraderingsplan

Utgången är ganska lång men det är värt att noggrant inspektera. Det första avsnittet bör rapportera att alla Kubernetes-komponenter kommer att uppgraderas till det versionsnummer du valde tidigare. Nya versioner kan också visas för CoreDNS och etcd.

COMPONENT CURRENT TARGET kube-apiserver v1.24.5 v1.25.1 kube-controller-manager v1.24.5 v1.25.1 kube-scheduler v1.24.5 v1.25.1 kube-proxy v1.24.5 v1.25.1 CoreDNS v1.8.6 v1.9.3 etcd 3.5.3-0 3.5.4-0

Slutet av utdata inkluderar en tabell som visar alla nödvändiga konfigurationsändringar. Du kan ibland behöva vidta manuella åtgärder för att justera dessa konfigurationsfiler och skicka dem till klustret. Se dokumentationen för din release om du får ett “ja” i “Manuell uppgradering krävs” kolumn.

API GROUP AKTUELL VERSION ÖNDRAD VERSION MANUELL UPPGRADERING KRÄVS kubeproxy.config.k8s.io v1alpha1 v1alpha1 nej kubelet.config.k8s.io v1beta1 v1beta1 nej

Detta kluster är nu redo att uppgraderas. Planen har bekräftat att Kubernetes v1.25.1 är tillgänglig och inga manuella åtgärder krävs. Kontrollera att du har installerat rätt Kubeadm-version om ingen plan skapas eller om fel uppstår. Du kanske försöker flytta mellan mer än en mindre version.

Använda uppgraderingsplanen

Nu kan du instruera Kubeadm att fortsätta med tillämpa uppgraderingsplanen genom att köra uppgradering tillämpas med rätt versionsnummer:

$ sudo kubeadm upgrade apply v1.25.1

En bekräftelseprompt visas:

[uppgradering/version] Du har valt att ändra klusterversionen till “v1.25.1” [uppgradering/versioner] Klusterversion: v1.24.5 [uppgradering/versioner] kubeadm version: v1.25.1 [uppgradera] Är du säker på att du vill Fortsätt? [y/N]:

Tryck på y för att fortsätta med uppgraderingen. Processen kan ta flera minuter medan den hämtar bilderna för de nya komponenterna och startar om ditt kontrollplan. Du kommer inte att kunna interagera på ett tillförlitligt sätt med ditt kluster API under den här tiden, men alla pågående Pods bör förbli i drift på dina noder.

Så slutligen bör du se ett framgångsmeddelande:

[uppgradera/lyckad] FRAMGÅNG! Ditt kluster har uppgraderats till “v1.25.1”. Njut!]

Kontrollplanet har nu uppgraderats.

Uppgradering av arbetarnoder

Nu kan du uppgradera dina arbetarnoder. Dessa steg måste också utföras på dina kontrollplansnoder. Uppgradera varje nod i sekvens för att minimera effekterna av att kapacitet tas bort från ditt kluster. Pods kommer att schemaläggas till andra noder medan var och en uppgraderas.

Töm först noden från dess befintliga Pods och placera en avspärrning runt den. Ersätt med namnet på noden istället för nod-1 i följande kommandon.

$ kubectl cordon node-1 $ kubectl drain node-1

Detta vräker nodens Pods och förhindrar nya. från att vara schemalagd. Noden är nu inaktiv i ditt kluster.

Släpp nästa pakethanterarens håll på kubeadm-, kubectl- och kubelet-paketen. Installera den nya versionen av var och en. Versionerna av alla tre paketen bör matcha exakt. Kom ihåg att ställa in spärrstatusen igen efter att du har fått de nya utgåvorna.

$ sudo apt uppdatering $ sudo apt-mark unhold kubeadm kubectl kubelet $ sudo apt install -y kubeadm=1.25.1-00 kubectl=1.25.1-00 kubelet=1.25.1-00 $ sudo apt-mark hold kubeadm kubectl kubelet < p>Använd sedan Kubeadm’s uppgraderingsnodkommando för att tillämpa uppgraderingen och uppdatera din nods konfiguration:

$ sudo kubeadm uppgraderingsnod

Starta slutligen om Kubelet-tjänsten och avspärra noden. Den bör gå med i klustret igen och börja acceptera nya Pods.

$ sudo systemctl daemon-reload $ sudo systemctl starta om kubelet $ kubectl uncordon node-1

Kontrollera ditt kluster

När du är klar med uppgraderingen, kör du kubectl version för att kontrollera den aktiva versionen matchar dina förväntningar:

$ kubectl version –short Client Version: v1.25.1 … Serverversion: v1.25.1

Kontrollera sedan att alla dina noder rapporterar sin nya version och har gått in i Redo-tillståndet:

$ kubectl få noder -o wide NAMN STATUS ROLLER ÅLDER VERSION ubuntu22 Redo kontrollplan 70m v1.25.1

Uppgraderingen är nu klar.

Återställning från ett uppgraderingsfel

Ibland kan en uppgradering misslyckas även om Kubeadm framgångsrikt planerar en väg och verifierar ditt klusters hälsa. Problem kan uppstå om uppgraderingen avbryts eller en Kubernetes-komponent slutar svara. Kubeadm bör automatiskt återgå till den tidigare versionen om detta händer.

Uppgraderingskommandot kan säkert upprepas för att försöka igen en misslyckad uppgradering. Det kommer att upptäcka hur ditt kluster skiljer sig från den förväntade versionen, vilket gör att det kan försöka återställa både totala fel och partiella uppgraderingar.

När det inte fungerar att upprepa kommandot, kan du försöka framtvinga uppgraderingen genom att lägga till flaggan –force till kommandot:

$ kubeadm upgrade apply –force

Detta kommer att tillåta uppgraderingen att fortsätta i situationer där krav saknas eller inte längre kan uppfyllas.

När katastrofen inträffar och ditt kluster verkar vara helt trasigt, bör du kunna återställa det med hjälp av säkerhetskopiorna som Kubeadm skriver automatiskt:

  • Kopiera innehållet i /etc/kubernetes/tmp/kubeadm -backup-etcd-<datum>-<tid> till din /var/lib/etcd-katalog.
  • Kopiera innehållet i /etc/kubernetes/tmp/kubeadm-backup-manifests-<datum>-<tid> till din /etc/kubernetes/manifests-katalog.

Dessa säkerhetskopior kan användas för att manuellt återställa den tidigare Kubernetes-versionen till ett fungerande tillstånd.

Sammanfattning

Att uppgradera Kubernetes med Kubeadm bör inte vara för stressande. Det mesta av processen är automatiserad med ditt engagemang begränsat till att installera de nya paketen och kontrollera uppgraderingsplanen.

Innan du uppgraderar bör du alltid konsultera Kubernetes ändringslogg och all dokumentation som publiceras av komponenter du använder i ditt kluster. Pod-nätverksgränssnitt, Ingress-kontroller, lagringsleverantörer och andra tillägg kan alla ha inkompatibilitet med en ny Kubernetes-version eller kräva sina egna uppgraderingsrutiner.

LÄS NÄSTA

  • › Samsung’s SmartThings ekosystem får Matter Support
  • › Så här slår du på Wi-Fi automatiskt på Android
  • › NVIDIA hyllar 12 GB RTX 4080-grafikkortet
  • › Hur man konverterar ett Excel-ark till Google Sheets
  • › 13 Google Sheets datum- och tidsfunktioner du behöver känna till
  • › Hur man spårar nästan vad som helst med Excel-listmallar

Posted

in

by

Tags: