Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Strategie postupného upgradu upgraduje uzly postupně (nebo několik současně), čímž minimalizuje přerušení úloh a zároveň zajišťuje, aby fond uzlů zůstal během procesu upgradu dostupný. Tento článek vysvětluje, jak nakonfigurovat postupné upgrady pro fondy uzlů AKS, včetně nastavení přírůstku, časového limitu vyprázdnění a doby stabilizace.
Než začnete
- Ujistěte se, že už je vaše řídicí rovina upgradovaná na cílovou verzi Kubernetes. Fondy uzlů nemůžete upgradovat na verzi vyšší než řídicí panel. Další informace najdete v tématu Upgrade řídicí roviny clusteru AKS.
- Pokud používáte Azure CLI, tento článek vyžaduje Azure CLI verze 2.34.1 nebo novější.
az --versionK vyhledání verze použijte příkaz. Pokud potřebujete nainstalovat nebo upgradovat, přečtěte si téma Instalace Azure CLI. - Ke konfiguraci postupných upgradů pro fondy uzlů AKS potřebujete oprávnění role RBAC
Microsoft.ContainerService/managedClusters/agentPools/write.
Přehled chování při postupném upgradu
Během postupného upgradu provádí AKS pro každý uzel ve fondu uzlů následující operace:
-
Přidat uzly přetížení: Přidejte nové bufferové uzly na základě maximálního nastavení pro přetížení (
--max-surge) pro zachování kapacity během upgradu. - Cordonování a vyprazdňování uzlů: Cordonujte a vyprazdňujte staré uzly jeden po druhém, abyste minimalizovali přerušení běžících aplikací. Pokud používáte max surge, izoluje a vyčerpá tolik uzlů současně, kolik je určeno jako vyrovnávací uzly.
- Počkejte na namáčení ( volitelné): Než budete pokračovat v upgradu, počkejte na nakonfigurovanou dobu namáčení , než budete pokračovat v upgradu, aby se úlohy stabilizovaly na nových uzlech.
- Přeinstalovat staré uzly: Když se staré uzly vyprázdní, znovu se nainstalují, aby byly připraveny pro novou verzi. Nově nakonfigurované uzly se stanou uzly vyrovnávací paměti pro další sadu uzlů, které mají být upgradovány.
- Opakovat: Tento proces se opakuje, dokud nebudou upgradovány všechny uzly ve fondu uzlů.
- Odebrat přídavné uzly: Po upgradu všech uzlů se odeberou všechny zbývající přídavné uzly a zachová se původní velikost fondu uzlů a vyváženost.
Konfigurace nastavení postupného upgradu
Přizpůsobení přepětí uzlu
Důležité
- Požadované maximální zatížení uzlů při upgradech vyžaduje kvótu předplatného pro každou operaci upgradu. Například cluster s pěti fondy uzlů, z nichž každý čítá čtyři uzly, má celkem 20 uzlů. Pokud má každý fond uzlů maximální hodnotu nárůstu 50%, je k dokončení upgradu vyžadována extra výpočetní kvóta a kvóta IP adres 10 uzlů (dva uzly × pěti fondů).
- Nastavení maximálního přepětí ve fondu uzlů je trvalé. Následující upgrady Kubernetes nebo upgrady verzí uzlů používají toto nastavení. Maximální hodnotu navýšení pro fondy uzlů můžete kdykoli změnit. Pro fondy produkčních uzlů doporučujeme maximální nastavení nárůstu 33%.
- Pokud používáte Azure CNI, ověřte, že v podsíti jsou dostupné IP adresy pro splnit IP požadavky Azure CNI.
- Škálovací sady virtuálních počítačů Azure (VMSS) umožňuje maximálně 1 000 instancí na škálovací sadu. Pokud by aktuální velikost fondu uzlů plus vypočítaný počet přepětí překročil 1 000 instancí, AKS upgrade před spuštěním odmítne.
AKS ve výchozím nastavení konfiguruje upgrady tak, aby se navýšily o jeden další uzel. Výchozí hodnota jednoho pro nastavení maximálního přepětí umožňuje AKS minimalizovat přerušení úloh vytvořením dalšího uzlu před cordonem nebo vyprázdněním existujících aplikací, aby nahradila starší verzi uzlu. Maximální hodnotu nárůstu pro fond uzlů můžete přizpůsobit. Když zvýšíte maximální hodnotu nárůstu, proces upgradu se dokončí rychleji, ale během procesu upgradu může dojít k většímu přerušení.
Například maximální hodnota nárůstu 100% poskytuje nejrychlejší možný proces upgradu, ale zároveň způsobí, že všechny uzly ve fondu uzlů budou současně vyprázdněny. Pro testovací prostředí můžete chtít použít vyšší hodnotu. Pro fondy produkčních uzlů doporučujeme nastavit maximální nárůst kapacity na 33%.
AKS přijímá celočíselné hodnoty i procentuální hodnotu maximálního nárůstu. Například:
| Typ hodnoty | Example | Description |
|---|---|---|
| Integer | 5 |
Pět dalších uzlů pro navýšení |
| Procento | 50% |
Zvýšení kapacity o polovinu aktuálního počtu uzlů ve fondu |
Maximální přepětí lze nastavit na celé číslo nebo procento. Procentuální hodnota se zaokrouhlí nahoru na nejbližší počet uzlů. Pokud je maximální hodnota nárůstu vyšší než požadovaný počet uzlů, které se mají upgradovat, použije se počet uzlů, které se mají upgradovat, pro maximální hodnotu nárůstu.
Pokud škálování na maximální hodnotu navýšení není možné kvůli omezením kvóty nebo kapacity, AKS se u fondů agentů s verzí Kubernetes >= 1.35 automaticky jako záložní možnost pokusí o navýšení o 1. Pokud je navýšení o 1 úspěšné, upgrade pokračuje s 1 navýšeným uzlem.
Nastavení maximální hodnoty přepětí
Nastavte maximální hodnoty přepětí pro nové nebo existující fondy uzlů pomocí příkazu az aks nodepool add nebo az aks nodepool update s parametrem --max-surge. Například:
# Set max surge for a new node pool
az aks nodepool add \
--name <node-pool-name> \
--resource-group <resource-group-name> \
--cluster-name <cluster-name> \
--max-surge 33%
# Update max surge for an existing node pool
az aks nodepool update \
--name <node-pool-name> \
--resource-group <resource-group-name> \
--cluster-name <cluster-name> \
--max-surge 5
Přizpůsobení nedostupných uzlů
Důležité
- Maximální nedostupnost nevytváří během procesu upgradu surge uzly. Místo toho AKS izoluje n uzly (maximální počet nedostupných uzlů) najednou a přesune pody na jiné uzly v poolu agentů. To může způsobit přerušení úloh, pokud se pody nedají naplánovat.
- Maximální nedostupnost může způsobit více selhání kvůli nenaplněným rozpočtům přerušení podů (PDB), protože je méně dostupných prostředků pro naplánování podů. Další informace najdete v tématu Řešení potíží s pod disruptními rozpočty.
- U fondů systémových uzlů nelze nastavit maximální nedostupnost.
AKS může také nakonfigurovat upgrady tak, aby nevyužívaly uzel pro zvýšení kapacity a aktualizovaly uzly přímo na místě. Maximální hodnota nedostupnosti určuje, kolik uzlů lze současně připojit a vyprázdnit z existujících uzlů fondu uzlů. Doporučuje se použít funkci max unavailable pro in-place upgrade, pokud není možné získat další kvótu nebo kapacitu pro navýšení během upgradu.
AKS přijímá celočíselné hodnoty i procentuální hodnotu pro maximální nedostupnost. Například:
| Typ hodnoty | Example | Description |
|---|---|---|
| Integer | 5 |
Z existujících uzlů je izolováno pět uzlů. |
| Procento | 50% |
Polovina aktuálního počtu uzlů ve fondu nebude k dispozici. |
Výchozí hodnota atributu maxUnavailable je 0. Pokud je maxUnavailable0, AKS vyžaduje, aby maxSurge bylo větší než 0. Další podrobnosti najdete v referenčních informacích k rozhraní API AgentPoolUpgradeSettings.
Stejně jako maximální nárůst výkonu platí, že pokud je maximální nedostupná hodnota vyšší než počet zbývajících uzlů, které se mají upgradovat v aktuální operaci, použije se počet zbývajících uzlů, které se mají upgradovat, pro maximální nedostupnou hodnotu. K této podmínce může dojít například v případě, že se operace upgradu obnoví až po několika uzlech ve fondu, které byly dříve upgradovány.
Nastavit maximální nedostupnou hodnotu
Nastavte maximální nedostupné hodnoty pro nové nebo existující fondy uzlů pomocí příkazu az aks nodepool add, az aks nodepool update nebo az aks nodepool upgrade s parametrem --max-unavailable. Například:
# Set max unavailable for a new node pool
az aks nodepool add \
--name <node-pool-name> \
--resource-group <resource-group-name> \
--cluster-name <cluster-name> \
--max-surge 0 \
--max-unavailable 5
# Update max unavailable for an existing node pool
az aks nodepool update \
--name <node-pool-name> \
--resource-group <resource-group-name> \
--cluster-name <cluster-name> \
--max-surge 0 \
--max-unavailable 5
# Set max unavailable at upgrade time
az aks nodepool upgrade \
--name <node-pool-name> \
--resource-group <resource-group-name> \
--cluster-name <cluster-name> \
--max-surge 0 \
--max-unavailable 5
Záložní verze MaxUnavailable (Preview)
Důležité
Funkce AKS ve verzi Preview jsou k dispozici na bázi samoobsluhy a dobrovolného přihlášení. Ukázky jsou poskytovány "tak, jak jsou" a "dle dostupnosti" a jsou vyloučeny ze smluv o úrovni služeb a z omezené záruky. Předběžné verze AKS jsou částečně pokryty zákaznickou podporou podle možností. Proto tyto funkce nejsou určené pro produkční použití. Další informace najdete v následujících článcích podpory:
Pokud jsou hodnoty maxSurge i maxUnavailable větší než 0, AKS během aktualizací používá záložní strategii:
-
Pokus o úplné navýšení: AKS se nejprve pokusí o navýšení s použitím nakonfigurované hodnoty
maxSurge. - Použít navýšení o 1 jako záložní možnost: Pokud plné navýšení není možné kvůli omezením kvóty nebo kapacity, AKS se místo toho pokusí navýšit počet uzlů o 1 (pro fondy agentů s verzí Kubernetes >= 1.35).
-
Vraťte se k místnímu upgradu: Pokud se službě AKS nepodaří získat přepětí uzlu, vrátí se k místnímu upgradu pomocí
maxUnavailable, propojování a vyprázdnění existujících uzlů bez přidání nových uzlů.
Tento záložní přístup zajišťuje, že upgrady můžou pokračovat i v případě, že je kapacita omezená, a přesto dává přednost méně rušivému přístupu založenému na nárůstu, když jsou prostředky k dispozici.
K použití záložního mechanismu MaxUnavailable je vyžadováno rozšíření aks-preview pro Azure CLI.
maxSurge a maxUnavailable lze je použít společně pro záložní chování nebo jednotlivě.
Nastavení maximálního nárůstu a maximální nedostupné hodnoty
# Configure fallback: try surge first, fall back to in-place upgrade if capacity is unavailable
az aks nodepool add \
--name <node-pool-name> \
--resource-group <resource-group-name> \
--cluster-name <cluster-name> \
--max-surge 33% \
--max-unavailable 3
# Update an existing node pool with fallback configuration
az aks nodepool update \
--name <node-pool-name> \
--resource-group <resource-group-name> \
--cluster-name <cluster-name> \
--max-surge 33% \
--max-unavailable 3
Přizpůsobení časového limitu vyprázdnění uzlu
Na určitých podech můžete mít dlouhotrvající úlohy, které nemůžete během provozu přeplánovat na jiný uzel. Například stavová úloha náročná na paměť, která musí být dokončena. V těchto případech můžete nakonfigurovat časový limit vyprázdnění uzlu, který AKS respektuje v pracovním postupu upgradu.
Výchozí hodnota časového limitu vyprázdnění uzlu je 30 minut. Hodnoty časového limitu vyprázdnění uzlu můžou být minimálně 5 minut a maximálně 24 hodin.
Pokud hodnota časového limitu vyprázdnění uplynula a pody jsou stále spuštěné, operace upgradu se zastaví. Jakákoliv následná PUT operace obnoví zastavený upgrade.
Návod
U dlouhotrvajících podů byste měli také nakonfigurovat terminationGracePeriodSeconds ve specifikaci podu.
Nastavení hodnoty časového limitu vyprázdnění uzlu
Pomocí příkazu az aks nodepool add nebo az aks nodepool update s parametrem --drain-timeout nastavte časový limit odklonění uzlu (v minutách) pro nové nebo existující fondy uzlů.
# Set drain timeout for a new node pool
az aks nodepool add \
--name <node-pool-name> \
--resource-group <resource-group-name> \
--cluster-name <cluster-name> \
--drain-timeout 100
# Update drain timeout for an existing node pool
az aks nodepool update \
--name <node-pool-name> \
--resource-group <resource-group-name> \
--cluster-name <cluster-name> \
--drain-timeout 45
Přizpůsobení doby namočení uzlu
Pokud chcete povolit čekací dobu po určitou dobu mezi vyprázdněním uzlu a pokračováním jeho opětovného vytvoření a přechodem na další uzel, můžete nastavit dobu namočení. Tato doba namočení vám dává příležitost provádět další úlohy během procesu upgradu, jako je například kontrola stavu aplikace z řídicího panelu monitorování.
Výchozí doba namočení uzlu je 0 minut. Hodnoty doby namočení uzlu můžou být minimálně 0 minut a maximálně 30 minut. Doporučujeme udržovat dobu namáčení co nejkratší, jak je to rozumně možné. Vyšší doba namočení uzlu zvyšuje celkovou dobu trvání upgradu a zpožďuje zjišťování problémů.
Nastavení hodnoty doby namočení uzlu
Nastavte dobu namočení uzlu (v minutách) pro nové nebo existující fondy uzlů pomocí az aks nodepool addpříkazu , az aks nodepool updatenebo az aks nodepool upgrade příkazu s příznakem --node-soak-duration .
# Set node soak time for a new node pool
az aks nodepool add \
--name <node-pool-name> \
--resource-group <resource-group-name> \
--cluster-name <cluster-name> \
--node-soak-duration 10
# Update node soak time for an existing node pool
az aks nodepool update \
--name <node-pool-name> \
--resource-group <resource-group-name> \
--cluster-name <cluster-name> \
--max-surge 33% \
--node-soak-duration 5
# Set node soak time when upgrading an existing node pool
az aks nodepool upgrade \
--name <node-pool-name> \
--resource-group <resource-group-name> \
--cluster-name <cluster-name> \
--max-surge 33% \
--node-soak-duration 20
Zobrazení událostí upgradu uzlu AKS
K monitorování průběhu postupného upgradu můžete zobrazit události upgradu pomocí kubectl get events příkazu.
kubectl get events --field-selector reason=Drain,reason=Surge,reason=Upgrade
Příklad výstupu během události upgradu:
default 2m1s Normal Drain node/aks-nodepool1-12345678-vmss000001 Draining node: [aks-nodepool1-12345678-vmss000001]
default 9m22s Normal Surge node/aks-nodepool1-12345678-vmss000002 Created a surge node [aks-nodepool1-12345678-vmss000002 nodepool1] for agentpool nodepool1
default 1m45s Normal Upgrade node/aks-nodepool1-12345678-vmss000001 Soak duration 5m0s after draining node: aks-nodepool1-12345678-vmss000001
Doporučené nastavení upgradu fondu uzlů AKS pro produkční úlohy
Následující tabulka popisuje doporučené nastavení upgradu fondu uzlů pro produkční úlohy:
| Setting | Recommendation |
|---|---|
| Maximální přepětí | Nastavení na 33% pro fondy produkčních uzlů |
| Časový limit vyprázdnění | Konfigurujte podle požadavků nejdéle běžícího podu. |
| Doba namočení | Pokud nepotřebujete ruční ověření, použijte krátkou dobu (0–5 minut). |
| Rozpočty pro přerušení podů | Konfigurace souborů PDB pro kritické úlohy pro řízení vyřazení podů |
| Objednávka upgradu | Nejprve upgradujte neprodukční fondy uzlů, abyste ověřili novou verzi. |