Uppgradera ett AKS-kluster (Azure Kubernetes Service)

En del av AKS-klustrets livscykel omfattar periodiska uppgraderingar till den senaste Kubernetes-versionen. Det är viktigt att du använder de senaste säkerhetsuppdateringarna eller uppgraderar för att få de senaste funktionerna. Den här artikeln visar hur du uppgraderar huvudkomponenterna eller en enskild standardnodpool i ett AKS-kluster.

Information om AKS-kluster som använder flera nodpooler eller Windows Server-noder finns i Uppgradera en nodpool i AKS.

Innan du börjar

Den här artikeln kräver att du kör Azure CLI version 2.0.65 eller senare. Kör az --version för att hitta versionen. Om du behöver installera eller uppgradera kan du läsa Installera Azure CLI.

Varning

En AKS-klusteruppgradering utlöser en avspärrning och tömning av noderna. Om du har en låg tillgänglig beräkningskvot kan uppgraderingen misslyckas. Mer information finns i Öka kvoter

Sök efter tillgängliga uppgraderingar av AKS-kluster

Du kan kontrollera vilka Kubernetes-versioner som är tillgängliga för klustret med kommandot az aks get-upgrades. Följande exempel söker efter tillgängliga uppgraderingar till myAKSCluster i myResourceGroup:

az aks get-upgrades --resource-group myResourceGroup --name myAKSCluster --output table

Anteckning

När du uppgraderar ett AKS-kluster som stöds går det inte att hoppa över Kubernetes-mindre versioner. Alla uppgraderingar måste utföras sekventiellt efter huvudversionsnummer. Uppgraderingar mellan 1.14.x -> 1.15.x eller 1.15.x -> 1.16.x tillåts till exempel, men 1.14.x -> 1.16.x tillåts inte.

Du kan bara hoppa över flera versioner när du uppgraderar från en version som inte stöds tillbaka till en version som stöds. Till exempel kan en uppgradering från en 1.10.x --> som stöds 1.15.x slutföras.

Följande exempelutdata visar att klustret kan uppgraderas till versionerna 1.19.1 och 1.19.3:

Name     ResourceGroup    MasterVersion    Upgrades
-------  ---------------  ---------------  --------------
default  myResourceGroup  1.18.10          1.19.1, 1.19.3

Om ingen uppgradering är tillgänglig visas meddelandet:

ERROR: Table output unavailable. Use the --query option to specify an appropriate query. Use --debug for more info.

Anpassa uppgradering av nodtoppar

Viktigt

Nodtoppar kräver prenumerationskvot för det begärda högsta antalet ökningar för varje uppgraderingsåtgärd. Till exempel har ett kluster som har 5 nodpooler, var och en med 4 noder, totalt 20 noder. Om varje nodpool har ett högsta värde på 50 % krävs ytterligare beräkning och IP-kvot på 10 noder (2 noder * 5 pooler) för att slutföra uppgraderingen.

Om du Azure CNI bör du kontrollera att det finns tillgängliga IP-adresser i undernätet för att uppfylla IP-kraven för Azure CNI.

Som standard konfigurerar AKS uppgraderingar så att de ökar med ytterligare en nod. Ett standardvärde på ett för högsta ökningsinställningar gör att AKS kan minimera avbrott i arbetsbelastningen genom att skapa ytterligare en nod innan avspärrningen/tömning av befintliga program ersätter en äldre versionad nod. Maxvärdet för ökningar kan anpassas per nodpool för att möjliggöra en avvägning mellan uppgraderingshastighet och uppgraderingsavbrott. Genom att öka det högsta värdet slutförs uppgraderingsprocessen snabbare, men om du anger ett stort värde för maximal ökning kan det orsaka avbrott under uppgraderingsprocessen.

Ett högsta värde på 100 % ger till exempel den snabbaste möjliga uppgraderingsprocessen (dubblering av antalet noder) men gör också att alla noder i nodpoolen töms samtidigt. Du kanske vill använda ett högre värde som detta för testmiljöer. För produktionsnodpooler rekommenderar vi en max_surge inställning på 33 %.

AKS accepterar både heltalsvärden och ett procentvärde för högsta ökning. Ett heltal som "5" anger ytterligare fem noder som ökar. Värdet "50 %" anger ett ökningsvärde på hälften av det aktuella antalet noder i poolen. Högsta ökning i procent-värden kan vara minst 1 % och högst 100 %. Ett procentvärde avrundas uppåt till närmaste nodantal. Om maxvärdet för ökningar är lägre än det aktuella nodantalet vid tidpunkten för uppgraderingen används det aktuella nodantalet för det högsta ökningsvärdet.

Under en uppgradering kan maxvärdet för ökningar vara minst 1 och ett maxvärde som är lika med antalet noder i nodpoolen. Du kan ange större värden, men det maximala antalet noder som används för högsta ökning är inte högre än antalet noder i poolen vid tidpunkten för uppgraderingen.

Viktigt

Inställningen för högsta ökning i en nodpool är beständig. Efterföljande Kubernetes-uppgraderingar eller nodversionsuppgraderingar använder den här inställningen. Du kan när som helst ändra det högsta värdet för dina nodpooler. För produktionsnodpooler rekommenderar vi en högsta inställning på 33 %.

Använd följande kommandon för att ange högsta ökningsvärden för nya eller befintliga nodpooler.

# Set max surge for a new node pool
az aks nodepool add -n mynodepool -g MyResourceGroup --cluster-name MyManagedCluster --max-surge 33%
# Update max surge for an existing node pool 
az aks nodepool update -n mynodepool -g MyResourceGroup --cluster-name MyManagedCluster --max-surge 5

Uppgradera ett AKS-kluster

Använd kommandot az aks upgrade för att uppgradera med en lista över tillgängliga versioner för ditt AKS-kluster. Under uppgraderingsprocessen kommer AKS att:

  • lägg till en ny buffertnod (eller så många noder som konfigurerats i högstaökning) till det kluster som kör den angivna Kubernetes-versionen.
  • avspärrning och tömning av en av de gamla noderna för att minimera störningar i program som körs (om du använder maximal ökning av avspärrning kommer det att avspärra och tömma så många noder samtidigt som antalet angivna buffertnoder).
  • När den gamla noden är helt tömd återställs den till att ta emot den nya versionen och blir buffertnoden för följande nod som ska uppgraderas.
  • Den här processen upprepas tills alla noder i klustret har uppgraderats.
  • I slutet av processen tas den sista buffertnoden bort, vilket upprätthåller det befintliga antalet agentnoder och zonsaldot.
az aks upgrade \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --kubernetes-version KUBERNETES_VERSION

Det tar några minuter att uppgradera klustret, beroende på hur många noder du har.

Viktigt

Se till att alla (PDU) tillåter att minst 1 poddreplik flyttas åt gången, annars misslyckas åtgärden med att PodDisruptionBudgets tömma/avlägsna. Om tömningsåtgärden misslyckas misslyckas uppgraderingsåtgärden av design för att säkerställa att programmen inte avbryts. Korrigera vad som gjorde att åtgärden stoppas (felaktiga PDU:er, brist på kvot och så vidare) och försök igen.

Bekräfta att uppgraderingen lyckades med kommandot az aks show:

az aks show --resource-group myResourceGroup --name myAKSCluster --output table

Följande exempelutdata visar att klustret nu kör 1.18.10:

Name          Location    ResourceGroup    KubernetesVersion    ProvisioningState    Fqdn
------------  ----------  ---------------  -------------------  -------------------  ----------------------------------------------
myAKSCluster  eastus      myResourceGroup  1.18.10              Succeeded            myakscluster-dns-379cbbb9.hcp.eastus.azmk8s.io

Ange kanal för automatisk uppgradering

Förutom att manuellt uppgradera ett kluster kan du ange en kanal för automatisk uppgradering i klustret. Följande uppgraderingskanaler är tillgängliga:

Kanal Åtgärd Exempel
none inaktiverar automatiska uppgraderingar och behåller klustret i den aktuella versionen av Kubernetes Standardinställning om den lämnas oförändrad
patch uppgradera automatiskt klustret till den senaste korrigeringsversionen som stöds när det blir tillgängligt samtidigt som delversionen är densamma. Om ett kluster till exempel kör version 1.17.7 och versionerna 1.17.9, 1.18.4, 1.18.6 och 1.19.1 är tillgängliga uppgraderas klustret till 1.17.9
stable uppgradera automatiskt klustret till den senaste korrigeringsversionen som stöds på delversion N-1, där N är den senaste delversionen som stöds. Om ett kluster till exempel kör version 1.17.7 och versionerna 1.17.9, 1.18.4, 1.18.6 och 1.19.1 är tillgängliga uppgraderas klustret till 1.18.6.
rapid uppgradera automatiskt klustret till den senaste korrigeringsversionen som stöds på den senaste delversion som stöds. I de fall där klustret har en version av Kubernetes som har en N-2-delversion där N är den senaste delversionen som stöds, uppgraderar klustret först till den senaste korrigeringsversionen som stöds på N-1-delversionen. Om ett kluster till exempel kör version 1.17.7 och versionerna 1.17.9, 1.18.4, 1.18.6 och 1.19.1 är tillgängliga uppgraderas klustret först till 1.18.6 och uppgraderas sedan till 1.19.1.
node-image uppgradera automatiskt nodavbildningen till den senaste tillgängliga versionen. Microsoft tillhandahåller korrigeringar och nya avbildningar för avbildningsnoder ofta (vanligtvis varje vecka), men noder som körs får inte de nya avbildningarna om du inte uppgraderar en nodavbildning. När du startar node-image-kanalen uppdateras dina nodavbildningar automatiskt när en ny version är tillgänglig.

Anteckning

Klusteruppgradering uppdateras endast till GA-versioner av Kubernetes och kommer inte att uppdateras till förhandsversioner.

Uppgradering av ett kluster sker automatiskt på samma sätt som när ett kluster uppgraderas manuellt. Mer information finns i Uppgradera ett AKS-kluster.

Om du vill ange kanalen för automatisk uppgradering när du skapar ett kluster använder du parametern auto-upgrade-channel, ungefär som i följande exempel.

az aks create --resource-group myResourceGroup --name myAKSCluster --auto-upgrade-channel stable --generate-ssh-keys

Om du vill ange kanalen för automatisk uppgradering i ett befintligt kluster uppdaterar du parametern auto-upgrade-channel, ungefär som i följande exempel.

az aks update --resource-group myResourceGroup --name myAKSCluster --auto-upgrade-channel stable

Använda automatisk klusteruppgradering med planerat underhåll

Om du använder planerat underhåll och automatisk uppgradering startar uppgraderingen under den angivna underhållsfönstret. Mer information om planerat underhåll finns i Använda planerat underhåll för att schemalägga underhållsfönstret för ditt Azure Kubernetes Service-kluster (förhandsversion).

Särskilda överväganden för nodpooler som sträcker sig över flera Tillgänglighetszoner

AKS använder zonbalansering med bästa möjliga ansträngning i nodgrupper. Under en uppgraderingstopp är zon(er) för de stora nodarna i VM-skalningsuppsättningar okänt i förväg. Detta kan tillfälligt orsaka en obalanserad zonkonfiguration under en uppgradering. AKS tar dock bort de första nodarna när uppgraderingen har slutförts och bevarar den ursprungliga zonsaldot. Om du vill att zonerna ska vara balanserade under uppgraderingen kan du öka ökningen till en multipel av 3 noder. VM-skalningsuppsättningar balanserar sedan noderna mellan Tillgänglighetszoner med zonbalansering med bästa möjliga ansträngning.

Om du har PVC:er som backas upp av Azure LRS-diskar, kommer de att bindas till en viss zon och kan misslyckas med att återställas omedelbart om strömstoppsnoden inte matchar zonen för PV. Detta kan orsaka driftstopp i programmet när uppgraderingsåtgärden fortsätter att tömma noder, men PV:erna är bundna till en zon. Om du vill hantera det här fallet och upprätthålla hög tillgänglighet konfigurerar du en budget för poddavbrott i ditt program. På så sätt kan Kubernetes respektera dina tillgänglighetskrav under uppgraderingens tömning.

Nästa steg

Den här artikeln visade hur du uppgraderar ett befintligt AKS-kluster. Mer information om hur du distribuerar och hanterar AKS-kluster finns i uppsättningen självstudier.