Kurz: Upgrade Kubernetes ve službě Azure Kubernetes Service (AKS)
V rámci životního cyklu aplikace a clusteru můžete chtít upgradovat na nejnovější dostupnou verzi Kubernetes. Cluster Azure Kubernetes Service (AKS) můžete upgradovat pomocí Azure CLI, Azure PowerShell nebo Azure Portal.
V tomto kurzu, který je sedmou částí sedmidílné série, se naučíte:
- Identifikujte aktuální a dostupné verze Kubernetes.
- Upgradujte uzly Kubernetes.
- Ověřte úspěšný upgrade.
Než začnete
V předchozích kurzech jste zabalili aplikaci do image kontejneru a nahráli image kontejneru do Azure Container Registry (ACR). Vytvořili jste také cluster AKS a nasadili do něj aplikaci. Pokud jste tyto kroky nedokončili a chcete postupovat podle tohoto kurzu, začněte kurzem 1: Příprava aplikace pro AKS.
- Pokud používáte Azure CLI, tento kurz vyžaduje Azure CLI verze 2.34.1 nebo novější. Verzi zjistíte spuštěním příkazu
az --version
. Pokud potřebujete instalaci nebo upgrade, přečtěte si téma Instalace Azure CLI. - Pokud používáte Azure PowerShell, tento kurz vyžaduje Azure PowerShell verze 5.9.0 nebo novější. Verzi zjistíte spuštěním příkazu
Get-InstalledModule -Name Az
. Pokud potřebujete provést instalaci nebo upgrade, přečtěte si téma Instalace Azure PowerShellu.
Získání dostupných verzí clusteru
Před upgradem pomocí příkazu zkontrolujte, které verze Kubernetes jsou pro váš cluster
az aks get-upgrades
k dispozici.az aks get-upgrades --resource-group myResourceGroup --name myAKSCluster
Následující příklad výstupu ukazuje aktuální verzi 1.18.10 a uvádí dostupné verze v rámci upgradů.
{ "agentPoolProfiles": null, "controlPlaneProfile": { "kubernetesVersion": "1.18.10", ... "upgrades": [ { "isPreview": null, "kubernetesVersion": "1.19.1" }, { "isPreview": null, "kubernetesVersion": "1.19.3" } ] }, ... }
Upgrade clusteru
Uzly AKS jsou pečlivě prováděny a vyprázdněny, aby se minimalizovala případná narušení spuštěných aplikací. Během tohoto procesu AKS provede následující kroky:
- Přidá nový uzel vyrovnávací paměti (nebo tolik uzlů, kolik je nakonfigurovaných při maximálním nárůstu) do clusteru, ve kterém běží zadaná verze Kubernetes.
- Cordony a vyprázdní jeden ze starých uzlů, aby se minimalizovalo přerušení spuštěných aplikací. Pokud používáte maximální přepětí, spustí a vyprázdní tolik uzlů najednou jako zadaný počet uzlů vyrovnávací paměti.
- Když je starý uzel zcela vyprázdněný, znovu se přepíše, aby obdržel novou verzi, a stane se uzlem vyrovnávací paměti pro následující uzel, který se má upgradovat.
- Tento proces se opakuje, dokud nebudou upgradovány všechny uzly v clusteru.
- Na konci procesu se odstraní poslední uzel vyrovnávací paměti, který zachová stávající počet uzlů agenta a zůstatek zóny.
Poznámka
Pokud není zadána žádná oprava, cluster se automaticky upgraduje na nejnovější opravu GA zadané podverze. Například nastavení --kubernetes-version
na 1.21
způsobí upgrade clusteru na 1.21.9
.
Při upgradu pomocí podverze aliasu se podporuje pouze vyšší podverze. Například upgrade z 1.20.x
na neaktivuje upgrade na nejnovější opravu GA1.20
, ale upgrade na 1.21
aktivuje upgrade na nejnovější opravu GA 1.21
1.20
.
Upgradujte cluster pomocí
az aks upgrade
příkazu .az aks upgrade \ --resource-group myResourceGroup \ --name myAKSCluster \ --kubernetes-version KUBERNETES_VERSION
Poznámka
Najednou můžete upgradovat pouze jednu dílčí verzi. Můžete například upgradovat z verze 1.14.x na verzi 1.15.x, ale nemůžete upgradovat z verze 1.14.x na verzi 1.16.x přímo. Pokud chcete upgradovat z verze 1.14.x na verzi 1.16.x, musíte nejprve upgradovat z verze 1.14.x na verzi 1.15.x a pak provést další upgrade z verze 1.15.x na verzi 1.16.x.
Následující příklad výstupu ukazuje výsledek upgradu na verzi 1.19.1. Všimněte si, že kubernetesVersion teď zobrazuje 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" }
Zobrazení událostí upgradu
Poznámka
Při upgradu clusteru může na uzlech dojít k následujícím událostem Kubernetes:
- Přepětí: Vytvořte uzel přepětí.
- Vyprázdnění: Vyřaďte pody z uzlu. Každý pod má k dokončení vyřazení pětiminutový časový limit .
- Aktualizace: Aktualizace uzlu proběhla úspěšně nebo selhala.
- Odstranit: Odstraňte přepětový uzel.
Pomocí příkazu zobrazte události upgradu ve výchozích
kubectl get events
oborech názvů.kubectl get events
Následující příklad výstupu ukazuje některé z výše uvedených událostí uvedených během upgradu.
... 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) ...
Ověření upgradu
Pomocí příkazu ověřte, že upgrade proběhl úspěšně
az aks show
.az aks show --resource-group myResourceGroup --name myAKSCluster --output table
Následující příklad výstupu ukazuje cluster AKS, na kterém běží 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
Odstranění clusteru
Vzhledem k tomu, že tento kurz je poslední částí série, možná budete chtít cluster AKS odstranit. Uzly Kubernetes běží na virtuálních počítačích Azure a dál se účtují poplatky, i když cluster nepoužíváte.
Pomocí příkazu odeberte skupinu prostředků, službu kontejneru
az group delete
a všechny související prostředky.az group delete --name myResourceGroup --yes --no-wait
Poznámka
Když odstraníte cluster, instanční objekt Azure Active Directory (Azure AD) používaný clusterem AKS se neodebere. Postup odebrání instančního objektu najdete v tématu věnovaném aspektům instančního objektu AKS a jeho odstranění. Pokud jste použili spravovanou identitu, spravuje ji platforma a nevyžaduje zřizování ani obměňování tajných kódů.
Další kroky
V tomto kurzu jste upgradovali Kubernetes v clusteru AKS. Naučili jste se:
- Identifikujte aktuální a dostupné verze Kubernetes.
- Upgradujte uzly Kubernetes.
- Ověřte úspěšný upgrade.
Další informace o AKS najdete v přehledu AKS. Pokyny k vytváření úplných řešení pomocí AKS najdete v tématu Doprovodné materiály k řešení AKS.