Upgrade clusteru Azure Kubernetes Service (AKS)

Součástí životního cyklu clusteru AKS je pravidelné upgrady na nejnovější verzi Kubernetes. Je důležité použít nejnovější verze zabezpečení nebo upgradovat, abyste získali nejnovější funkce. V tomto článku se dozvíte, jak zkontrolovat, nakonfigurovat a použít upgrady na cluster AKS.

Clustery AKS, které používají více fondů uzlů nebo Windows Uzly serveru, najdete v tématu Upgrade fondu uzlů v AKS.

Než začnete

Tento článek vyžaduje, abyste spustili Azure CLI verze 2.0.65 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.

Upozornění

Upgrade clusteru AKS aktivuje cordon a vyprázdní uzly. Pokud máte k dispozici nízkou kvótu výpočetních prostředků, upgrade může selhat. Další informace najdete v tématu zvýšení kvót.

Kontrola dostupných upgradů clusteru AKS

Pokud chcete zkontrolovat, které verze Kubernetes jsou pro váš cluster dostupné, použijte příkaz az aks get-upgrades . Následující příklad zkontroluje dostupné upgrady na myAKSCluster v myResourceGroup:

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

Poznámka

Když upgradujete podporovaný cluster AKS, podverze Kubernetes nejde přeskočit. Všechny upgrady se musí provádět postupně podle čísla hlavní verze. Například upgrady mezi 1.14.x ->1.15.x nebo 1.15.x ->1.16.x jsou povoleny, ale 1.14.x ->1.16.x není povoleno.

Přeskočení více verzí je možné provést pouze při upgradu z nepodporované verze zpět na podporovanou verzi. Například upgrade z nepodporované verze 1.10.x –> podporovaná verze 1.15.x se dá dokončit, pokud je k dispozici.

Následující příklad výstupu ukazuje, že cluster je možné upgradovat na verze 1.19.1 a 1.19.3:

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

Následující výstup ukazuje, že nejsou k dispozici žádné upgrady:

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

Důležité

Pokud není k dispozici žádný upgrade, vytvořte nový cluster s podporovanou verzí Kubernetes a migrujte úlohy z existujícího clusteru do nového clusteru. Pokus o upgrade clusteru na novější verzi Kubernetes, pokud az aks get-upgrades se nezobrazují žádné dostupné upgrady, není podporováno.

Přizpůsobení upgradu nárůstu počtu uzlů

Důležité

Nárůst počtu uzlů vyžaduje kvótu předplatného pro požadovaný maximální počet nárůstů pro každou operaci upgradu. Například cluster, který má 5 fondů uzlů, každý s počtem 4 uzlů má celkem 20 uzlů. Pokud má každý fond uzlů maximální hodnotu 50 %, k dokončení upgradu se vyžaduje další výpočetní kvóta a kvóta IP adres 10 uzlů (2 uzly * 5 fondů).

Pokud používáte Azure CNI, ověřte, že v podsíti jsou k dispozici IP adresy, abyste splnili požadavky na IP adresu Azure CNI.

Ve výchozím nastavení služba AKS konfiguruje upgrady tak, aby přechází s jedním dalším uzlem. Výchozí hodnota jednoho z nastavení maximálního nárůstu zatížení umožní AKS minimalizovat přerušení úloh vytvořením dalšího uzlu před cordon/vyprázdněním stávajících aplikací, aby nahradil starší verzi uzlu. Maximální hodnota nárůstu může být přizpůsobena pro fond uzlů, aby se umožnil kompromis mezi rychlostí upgradu a přerušením upgradu. Zvýšením maximální hodnoty nárůstu se proces upgradu dokončí rychleji, ale nastavení velké hodnoty maximálního nárůstu může způsobit přerušení během procesu upgradu.

Maximální hodnota nárůstu 100 % například poskytuje nejrychlejší možný proces upgradu (zdvojnásobení počtu uzlů), ale zároveň způsobí, že všechny uzly ve fondu uzlů budou současně vyprázdněny. Můžete chtít použít vyšší hodnotu, například pro testovací prostředí. Pro fondy produkčních uzlů doporučujeme max_surge nastavení 33 %.

AKS přijímá celočíselné hodnoty i procentuální hodnotu maximálního nárůstu. Celé číslo, například "5", označuje pět dalších uzlů, které se mají narůstat. Hodnota "50%" označuje nárůst hodnoty poloviny aktuálního počtu uzlů ve fondu. Maximální nárůst procent může být minimálně 1 % a maximálně 100 %. Procentuální hodnota se zaokrouhlí nahoru na nejbližší počet uzlů. Pokud je maximální hodnota nárůstu nižší než aktuální počet uzlů v době upgradu, použije se aktuální počet uzlů pro maximální hodnotu nárůstu.

Během upgradu může být maximální hodnota nárůstu minimálně 1 a maximální hodnota rovna počtu uzlů ve vašem fondu uzlů. Můžete nastavit větší hodnoty, ale maximální počet uzlů použitých pro maximální nárůst kapacity nebude vyšší než počet uzlů ve fondu v době upgradu.

Důležité

Maximální nastavení nárůstu kapacity fondu uzlů je trvalé. Následující upgrady kubernetes nebo upgrady verzí uzlů budou toto nastavení používat. Maximální hodnotu nárůstu počtu uzlů můžete kdykoli změnit. Pro fondy produkčních uzlů doporučujeme nastavení maximálního nárůstu kapacity 33 %.

Pomocí následujících příkazů můžete nastavit maximální hodnoty nárůstu počtu nových nebo existujících fondů uzlů.

# 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

Upgrade clusteru AKS

Se seznamem dostupných verzí clusteru AKS použijte příkaz az aks upgrade . Během procesu upgradu AKS:

  • přidejte do clusteru, který spouští zadanou verzi Kubernetes, nový uzel vyrovnávací paměti (nebo libovolný počet uzlů nakonfigurovaných v maximálním nárůstu).
  • cordon a vyprázdněte jeden ze starých uzlů, aby se minimalizovalo přerušení spuštěných aplikací (pokud používáte maximální nárůst, bude to cordonovat a vyprázdnit libovolný počet uzlů současně s počtem zadaných uzlů vyrovnávací paměti).
  • Pokud je starý uzel zcela vyprázdněný, bude znovu zmagí, aby získal novou verzi a stane se uzlem vyrovnávací paměti pro upgrade následujícího uzlu.
  • 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á počet existujících 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 , které 1.21 způsobí upgrade clusteru na 1.21.9.

Při upgradu podverze aliasu se podporuje pouze vyšší podverze. Například upgrade z 1.20.x na neaktivuje upgrade na nejnovější opravu GA1.20, ale upgradem 1.21 se aktivuje upgrade na nejnovější opravu GA 1.211.20.

az aks upgrade \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --kubernetes-version KUBERNETES_VERSION

Upgrade clusteru trvá několik minut v závislosti na tom, kolik uzlů máte.

Důležité

Ujistěte se, že všechny PodDisruptionBudgets soubory PDB umožňují přesunout alespoň 1 repliku podu v době, jinak operace vyprázdnění nebo vyřazení selže. Pokud operace vyprázdnění selže, operace upgradu selže návrhem, aby se zajistilo, že se aplikace nenaruší. Opravte prosím, co způsobilo zastavení operace (nesprávné soubory PDB, nedostatek kvóty atd.) a zkuste operaci znovu.

Pokud chcete ověřit, že upgrade proběhl úspěšně, použijte příkaz az aks show :

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

Následující příklad výstupu ukazuje, že cluster teď běží 1.19.1:

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

Zobrazení událostí upgradu

Při upgradu clusteru můžou na každém uzlu nastat následující události Kubenetes:

  • Přepětí – vytvoření uzlu přepětí
  • Vyprázdnění – Pody se vyřaďte z uzlu. Každý pod má 30minutový časový limit pro dokončení vyřazení.
  • Aktualizace – Aktualizace uzlu byla úspěšná nebo selhala.
  • Delete – Odstraněno přepětí uzlu.

Slouží kubectl get events k zobrazení událostí ve výchozích oborech názvů při spuštění upgradu. Příklad:

kubectl get events 

Následující příklad výstupu ukazuje některé z výše uvedených událostí 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)
...

Nastavení kanálu automatického upgradu

Kromě ručního upgradu clusteru můžete v clusteru nastavit kanál automatického upgradu. K dispozici jsou následující kanály upgradu:

Kanál Akce Příklad
none zakáže automatické upgrady a udržuje cluster v aktuální verzi Kubernetes. Výchozí nastavení, pokud zůstane beze změny
patch automaticky upgradujte cluster na nejnovější podporovanou verzi opravy, jakmile bude k dispozici a zachová se stejná podverze. Pokud například cluster používá verzi 1.17.7 a verze 1.17.9, 1.18.4, 1.18.6 a 1.19.1, cluster se upgraduje na verzi 1.17.9.
stable cluster automaticky upgraduje na nejnovější podporovanou verzi opravy podverze N-1, kde N je nejnovější podporovaná podverze. Pokud například cluster používá verzi 1.17.7 a verze 1.17.9, 1.18.4, 1.18.6 a 1.19.1 , cluster se upgraduje na verzi 1.18.6.
rapid automaticky upgradujte cluster na nejnovější podporovanou verzi opravy u nejnovější podporované podverze. V případech, kdy je cluster ve verzi Kubernetes, která je v podverzi N-2 , kde N je nejnovější podporovaná podverze, cluster nejprve upgraduje na nejnovější podporovanou verzi opravy v podverzi N-1 . Pokud například cluster používá verzi 1.17.7 a verze 1.17.9, 1.18.4, 1.18.6 a 1.19.1 , upgraduje se váš cluster nejprve na verzi 1.18.6 a pak se upgraduje na verzi 1.19.1.
node-image automaticky upgradujte image uzlu na nejnovější dostupnou verzi. Microsoft poskytuje opravy a nové image pro uzly imagí často (obvykle týdně), ale vaše spuštěné uzly nezískají nové image, pokud neupgradujete image uzlu. Když zapnete kanál image uzlu, automaticky aktualizujete image uzlů, kdykoli bude k dispozici nová verze.

Poznámka

Automatický upgrade clusteru se aktualizuje jenom na verze GA Kubernetes a neaktualizuje se na verze Preview.

Automatický upgrade clusteru se řídí stejným postupem jako ruční upgrade clusteru. Další informace najdete v tématu Upgrade clusteru AKS.

Pokud chcete nastavit kanál automatického upgradu při vytváření clusteru, použijte parametr automatického upgradu kanálu podobný následujícímu příkladu.

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

Pokud chcete nastavit kanál automatického upgradu v existujícím clusteru, aktualizujte parametr kanálu automatického upgradu podobně jako v následujícím příkladu.

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

Použití automatického upgradu clusteru s plánovanou údržbou

Pokud používáte plánovanou údržbu a automatický upgrade, upgrade se spustí během zadaného časového období údržby. Další informace o plánované údržbě najdete v tématu Plánování časových období údržby pro cluster Azure Kubernetes Service (AKS) (Preview).

Zvláštní aspekty fondů uzlů, které zahrnují více Zóny dostupnosti

AKS používá vyrovnávání zón s nejlepším úsilím ve skupinách uzlů. Během nárůstu upgradu jsou zóny pro převýšovací uzly ve škálovacích sadách virtuálních počítačů předem neznámé. To může během upgradu dočasně způsobit vyváženou konfiguraci zóny. AKS však po dokončení upgradu odstraní přepětí uzlů a zachová původní zůstatek zóny. Pokud chcete zachovat zóny vyvážené během upgradu, zvyšte nárůst na více ze tří uzlů. Škálovací sady virtuálních počítačů pak budou vyrovnávat uzly napříč Zóny dostupnosti s vyrovnáváním zóny s nejlepším úsilím.

Pokud máte pvcs zálohované disky Azure LRS, budou vázány na určitou zónu a může se stát, že se okamžitě neobnoví, pokud přepadový uzel neodpovídá zóně PVC. To může způsobit výpadek aplikace, když operace upgradu pokračuje vyprázdnění uzlů, ale virtuální počítače jsou vázané na zónu. Pokud chcete tento případ zpracovat a zachovat vysokou dostupnost, nakonfigurujte rozpočet přerušení podů ve vaší aplikaci. Kubernetes tak může během operace vyprázdnění upgradu respektovat vaše požadavky na dostupnost.

Další kroky

Tento článek vám ukázal, jak upgradovat existující cluster AKS. Další informace o nasazení a správě clusterů AKS najdete v sadě kurzů.