Självstudie: Uppgradera Kubernetes i Azure Kubernetes Service (AKS)
Som en del av programmets och klustrets livscykel kanske du vill uppgradera till den senaste tillgängliga versionen av Kubernetes. Du kan uppgradera ditt Azure Kubernetes Service-kluster (AKS) med hjälp av Azure CLI, Azure PowerShell eller Azure Portal.
I den här självstudien, del sju av sju, lär du 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 i den här självstudien börjar du med Självstudie 1: Förbereda ett program 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.18.10 och visar de tillgängliga versionerna under uppgraderingar.
{ "agentPoolProfiles": null, "controlPlaneProfile": { "kubernetesVersion": "1.18.10", ... "upgrades": [ { "isPreview": null, "kubernetesVersion": "1.19.1" }, { "isPreview": null, "kubernetesVersion": "1.19.3" } ] }, ... }
Uppgradera ett 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) i 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 överspänning avspärrar och tömmer den så många noder samtidigt som antalet angivna buffertnoder.
- 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 behåller det befintliga antalet agentnoder och zonsaldot.
Anteckning
Om ingen korrigering anges uppgraderas klustret automatiskt till den angivna delversionens senaste GA-korrigering. Inställningen till resulterar till 1.21
exempel --kubernetes-version
i att klustret uppgraderas till 1.21.9
.
När du uppgraderar efter mindre aliasversion stöds endast en högre delversion. Till exempel utlöser uppgradering från 1.20.x
till 1.20
inte en uppgradering till den senaste GA-korrigeringen 1.20
, men uppgradering till 1.21
utlöser en uppgradering till den senaste GA-korrigeringen 1.21
.
Uppgradera klustret med kommandot
az aks upgrade
.az aks upgrade \ --resource-group myResourceGroup \ --name myAKSCluster \ --kubernetes-version KUBERNETES_VERSION
Anteckning
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.19.1. Observera att kubernetesVersion nu visar 1.19.1.
{ "agentPoolProfiles": [ { "count": 3, "maxPods": 110, "name": "nodepool1", "osType": "Linux", "storageProfile": "ManagedDisks", "vmSize": "Standard_DS1_v2", } ], "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.19.1", "location": "eastus", "name": "myAKSCluster", "type": "Microsoft.ContainerService/ManagedClusters" }
Visa uppgraderingshändelserna
Anteckning
När du uppgraderar klustret kan följande Kubernetes-händelser inträffa på noderna:
- Ökning: Skapa en överspänningsnod.
- Tömning: Avlägsna poddar från noden. Varje podd har en tidsgräns 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
Följande exempelutdata visar några av ovanstående händelser som anges under en uppgradering.
... default 2m1s Normal Drain node/aks-nodepool1-96663640-vmss000001 Draining node: [aks-nodepool1-96663640-vmss000001] ... default 9m22s Normal Surge node/aks-nodepool1-96663640-vmss000002 Created a surge node [aks-nodepool1-96663640-vmss000002 nodepool1] for agentpool %!s(MISSING) ...
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.19.1:
Name Location ResourceGroup KubernetesVersion CurrentKubernetesVersion ProvisioningState Fqdn ------------ ---------- --------------- ------------------- ------------------------ ------------------- ---------------------------------------------------------------- myAKSCluster eastus myResourceGroup 1.19.1 1.19.1 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. Kubernetes-noderna körs på virtuella Azure-datorer och fortsätter att debiteras även om du inte använder klustret.
Ta bort resursgruppen, containertjänsten och alla relaterade resurser med kommandot
az group delete
.az group delete --name myResourceGroup --yes --no-wait
Anteckning
När du tar bort klustret tas inte tjänstens huvudnamn för Azure Active Directory (Azure AD) 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.