Självstudie – Uppgradera ett AKS-kluster (Azure Kubernetes Service)
Som en del av programmets och klustrets livscykel kanske du vill uppgradera till den senaste tillgängliga versionen av Kubernetes. Du kan uppgradera ditt AkS-kluster (Azure Kubernetes Service) med hjälp av Azure CLI, Azure PowerShell eller Azure Portal.
I den här självstudien, del sju av sju, uppgraderar du ett AKS-kluster. Du lär dig att:
- Identifiera aktuella och tillgängliga Kubernetes-versioner.
- Uppgradera kubernetes-noderna.
- Verifiera en lyckad uppgradering.
Innan du börjar
I tidigare självstudier paketerade du ett program i en containeravbildning och laddade upp containeravbildningen till Azure Container Registry (ACR). Du har också skapat ett AKS-kluster och distribuerat ett program till det. Om du inte har slutfört de här stegen och vill följa med börjar du med Självstudie 1 – Förbereda programmet för AKS.
Om du använder Azure CLI kräver den här självstudien Azure CLI version 2.34.1 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.
Om du använder Azure PowerShell kräver den här självstudien Azure PowerShell version 5.9.0 eller senare. Kör Get-InstalledModule -Name Az
för att hitta versionen. Om du behöver installera eller uppgradera kan du läsa Install Azure PowerShell (Installera Azure PowerShell).
Hämta tillgängliga klusterversioner
Innan du uppgraderar kontrollerar du vilka Kubernetes-versioner som är tillgängliga för klustret med hjälp av
az aks get-upgrades
kommandot .az aks get-upgrades --resource-group myResourceGroup --name myAKSCluster
Följande exempelutdata visar den aktuella versionen som 1.28.9 och visar de tillgängliga versionerna under
upgrades
:{ "agentPoolProfiles": null, "controlPlaneProfile": { "kubernetesVersion": "1.28.9", ... "upgrades": [ { "isPreview": null, "kubernetesVersion": "1.29.4" }, { "isPreview": null, "kubernetesVersion": "1.29.2" } ] }, ... }
Uppgradera ett AKS-kluster
AKS-noder är noggrant avspärrade och tömda för att minimera eventuella störningar i program som körs. Under den här processen utför AKS följande steg:
- Lägger till en ny buffertnod (eller så många noder som konfigurerats i maximal ökning) till klustret som kör den angivna Kubernetes-versionen.
- Avspärrningar och tömmer en av de gamla noderna för att minimera störningar i program som körs. Om du använder maximal ökning spärrar och tömmer den så många noder samtidigt som antalet buffertnoder som anges.
- När den gamla noden är helt tömd återskapas den för 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 bibehåller det befintliga antalet agentnoder och zonsaldot.
Kommentar
Om ingen korrigering anges uppgraderas klustret automatiskt till den angivna delversionens senaste GA-korrigering. Om du till exempel ställer in --kubernetes-version
på resulterar det i att 1.28
klustret uppgraderas till 1.28.9
.
Mer information finns i Kubernetes-delversionsuppgraderingar som stöds i AKS.
Du kan antingen uppgradera klustret manuellt eller konfigurera automatiska klusteruppgraderingar. Vi rekommenderar att du konfigurerar automatiska klusteruppgraderingar för att säkerställa att klustret alltid kör den senaste versionen av Kubernetes.
Uppgradera klustret manuellt
Uppgradera klustret med hjälp av
az aks upgrade
kommandot .az aks upgrade \ --resource-group myResourceGroup \ --name myAKSCluster \ --kubernetes-version KUBERNETES_VERSION
Du uppmanas att bekräfta uppgraderingsåtgärden och bekräfta att du vill uppgradera kontrollplanet och alla nodpooler till den valda versionen av Kubernetes:
Are you sure you want to perform this operation? (y/N): y Since control-plane-only argument is not specified, this will upgrade the control plane AND all nodepools to version 1.29.2. Continue? (y/N): y
Kommentar
Du kan endast uppgradera en lägre version i taget. Du kan till exempel uppgradera från 1.14.x till 1.15.x, men du kan inte uppgradera från 1.14.x till 1.16.x direkt. Om du vill uppgradera från 1.14.x till 1.16.x måste du först uppgradera från 1.14.x till 1.15.x och sedan utföra en annan uppgradering från 1.15.x till 1.16.x.
Följande exempelutdata visar resultatet av uppgraderingen till 1.29.2. Observera att
kubernetesVersion
nu visas 1.29.2:{ ... "agentPoolProfiles": [ { ... "count": 3, "currentOrchestratorVersion": "1.29.2", "maxPods": 110, "name": "nodepool1", "nodeImageVersion": "AKSUbuntu-2204gen2containerd-202405.27.0", "orchestratorVersion": "1.29.2", "osType": "Linux", "upgradeSettings": { "drainTimeoutInMinutes": null, "maxSurge": "10%", "nodeSoakDurationInMinutes": null, "undrainableNodeBehavior": null }, "vmSize": "Standard_DS2_v2", ... } ], ... "currentKubernetesVersion": "1.29.2", "dnsPrefix": "myAKSClust-myResourceGroup-19da35", "enableRbac": false, "fqdn": "myaksclust-myresourcegroup-19da35-bd54a4be.hcp.eastus.azmk8s.io", "id": "/subscriptions/<Subscription ID>/resourcegroups/myResourceGroup/providers/Microsoft.ContainerService/managedClusters/myAKSCluster", "kubernetesVersion": "1.29.2", "location": "eastus", "name": "myAKSCluster", "type": "Microsoft.ContainerService/ManagedClusters" ... }
Konfigurera automatiska klusteruppgraderingar
Ange en kanal för automatisk uppgradering i klustret med kommandot
az aks update
med parametern--auto-upgrade-channel
inställd påpatch
.az aks update --resource-group myResourceGroup --name myAKSCluster --auto-upgrade-channel patch
Mer information finns i Uppgradera ett AKS-kluster (Azure Kubernetes Service) automatiskt.
Uppgradera AKS-nodbilder
AKS tillhandahåller regelbundet nya nodbilder. Linux-nodbilder uppdateras varje vecka och Windows-nodbilder uppdateras varje månad. Vi rekommenderar att du uppgraderar nodbilderna ofta för att använda de senaste AKS-funktionerna och säkerhetsuppdateringarna. Mer information finns i Uppgradera nodbilder i Azure Kubernetes Service (AKS). Information om hur du konfigurerar automatiska nodavbildningsuppgraderingar finns i Uppgradera azure Kubernetes Service -klusternodens operativsystemavbildningar automatiskt.
Visa uppgraderingshändelserna
Kommentar
När du uppgraderar klustret kan följande Kubernetes-händelser inträffa på noderna:
- Överspänning: Skapa en överspänningsnod.
- Tömning: Avlägsna poddar från noden. Varje podd har en timeout på fem minuter för att slutföra borttagningen.
- Uppdatering: Uppdateringen av en nod har slutförts eller misslyckats.
- Ta bort: Ta bort en överspänningsnod.
Visa uppgraderingshändelserna i standardnamnrymderna med kommandot
kubectl get events
.kubectl get events --field-selector source=upgrader
Följande exempelutdata visar några av ovanstående händelser som anges under en uppgradering:
LAST SEEN TYPE REASON OBJECT MESSAGE ... 5m Normal Drain node/aks-nodepool1-96663640-vmss000000 Draining node: aks-nodepool1-96663640-vmss000000 5m Normal Upgrade node/aks-nodepool1-96663640-vmss000000 Deleting node aks-nodepool1-96663640-vmss000000 from API server 4m Normal Upgrade node/aks-nodepool1-96663640-vmss000000 Successfully reimaged node: aks-nodepool1-96663640-vmss000000 4m Normal Upgrade node/aks-nodepool1-96663640-vmss000000 Successfully upgraded node: aks-nodepool1-96663640-vmss000000 4m Normal Drain node/aks-nodepool1-96663640-vmss000000 Draining node: aks-nodepool1-96663640-vmss000000 ...
Verifiera en uppgradering
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 AKS-klustret kör KubernetesVersion 1.27.3:
Name Location ResourceGroup KubernetesVersion CurrentKubernetesVersion ProvisioningState Fqdn ------------ ---------- --------------- ------------------- ------------------------ ------------------- ---------------------------------------------------------------- myAKSCluster eastus myResourceGroup 1.29.2 1.29.2 Succeeded myaksclust-myresourcegroup-19da35-bd54a4be.hcp.eastus.azmk8s.io
Ta bort klustret
Eftersom den här självstudien är den sista delen av serien kanske du vill ta bort ditt AKS-kluster för att undvika att debiteras Azure-avgifter.
Ta bort resursgruppen, containertjänsten och alla relaterade resurser med kommandot
az group delete
.az group delete --name myResourceGroup --yes --no-wait
Kommentar
När du tar bort klustret tas inte Microsoft Entra-tjänstens huvudnamn som används av AKS-klustret bort. Stegvisa instruktioner om hur du tar bort tjänstens huvudnamn finns i dokumentationen om viktiga överväganden och borttagning av AKS-tjänsten. Om du använde en hanterad identitet hanteras identiteten av plattformen och kräver inte att du etablerar eller roterar några hemligheter.
Nästa steg
I den här självstudien har du uppgraderat Kubernetes i ett AKS-kluster. Du har lärt dig att:
- Identifiera aktuella och tillgängliga Kubernetes-versioner.
- Uppgradera kubernetes-noderna.
- Verifiera en lyckad uppgradering.
Mer information om AKS finns i AKS-översikten. Vägledning om hur du skapar fullständiga lösningar med AKS finns i vägledningen för AKS-lösningen.
Azure Kubernetes Service