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.
Možná budete chtít změnit velikost virtuálních počítačů tak, aby vyhovovaly rostoucímu počtu nasazení nebo aby běžely větší úlohy. Změna velikosti instancí AKS přímo není podporována při použití škálovacích sad virtuálních počítačů v AKS, jak je uvedeno v zásadách podpory pro AKS:
Uzly agenta AKS se zobrazují na webu Azure Portal jako běžné prostředky Azure IaaS. Tyto virtuální počítače se ale nasazují do vlastní skupiny prostředků Azure (obvykle mají předponu MC_*). Přímé přizpůsobení těchto uzlů nemůžete provádět pomocí rozhraní API nebo prostředků IaaS. Všechny vlastní změny, které se neprovedou přes rozhraní API AKS, se nebudou uchovávat prostřednictvím upgradu, škálování, aktualizace nebo restartování.
V tomto článku se dozvíte o doporučené metodě, jak změnit velikost fondu uzlů vytvořením nového fondu uzlů s požadovanou velikostí SKU, izolováním a vyprázdněním existujících uzlů a následným odstraněním existujícího fondu uzlů.
Důležité
Tato metoda je specifická pro clustery AKS založené na škálovacích sadách virtuálních počítačů. Při použití fondů uzlů založených na virtuálních počítačích můžete snadno aktualizovat velikosti virtuálních počítačů v existujícím fondu uzlů pomocí jednoho příkazu Azure CLI a mít ve stejném fondu uzlů několik velikostí virtuálních počítačů. Další informace najdete v dokumentaci k fondům uzlů virtuálních počítačů.
Změna velikosti místního fondu uzlů VMSS (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:
Pomocí jediného příkazu az aks nodepool update --node-vm-size <new-size>teď můžete změnit velikost virtuálního počítače (SKU) existujícího fondu uzlů založených na VMSS. Když aktivujete tuto aktualizaci, poskytovatel prostředků AKS provede postupný upgrade:
- Navýšení počtu nových uzlů na cílovou velikost virtuálního počítače.
- Propojení a vyprázdnění starých uzlů
- Odstraňování starých uzlů.
Tím se zabrání ručnímu vytvoření, cordonu, vyprázdnění nebo odstranění pracovního postupu popsaného ve zbývající části tohoto článku.
Jak funguje zavedení změny velikosti
Nasazení změny velikosti používá stejný mechanismus postupného upgradu jako upgrade bitové kopie uzlu a upgrade verze Kubernetes, takže respektuje následující nastavení související s upgradem, která už jsou v poolu uzlů nakonfigurována. Konkrétně platí, že změna velikosti respektuje:
-
Max surge (
--max-surge): Určuje, kolik dalších uzlů s cílovou velikostí virtuálního počítače se přidá během zavádění. Vyšší hodnota mění velikost fondu rychleji, ale spotřebovává více výpočetních prostředků a kvót IP adres; nižší hodnota je pomalejší, ale méně rušivá. Výchozí hodnota AKS je1a33%doporučuje se pro fondy produkčních uzlů. -
Časový limit vyprázdnění uzlu (
--drain-timeout): Jak dlouho AKS čeká na vypuzení podu u každého starého uzlu, než ho vynuceně odstraní. Výchozí hodnota je 30 minut. Zkombinujte to s příslušnými PodDisruptionBudgets, aby bylo možné úlohy bezpečně odstavit. -
Doba trvání namočení uzlu (
--node-soak-duration): Jak dlouho AKS čeká, až se nový uzel stane připraveným před přechodem na další dávku. Užitečné k tomu, aby se úlohy po změně velikosti virtuálního počítače stabilizovaly před pokračováním v nasazování.
Protože změna velikosti využívá stejný proces upgradu, platí stejné předpoklady: ujistěte se, že vaše předplatné má dostatečnou kapacitu pro nahrazení cílové velikosti virtuálních počítačů a dostatek dostupných IP adres v podsíti pro navyšované uzly a že vaše PodDisruptionBudgety umožňují, aby byla najednou odsunuta alespoň jedna replika, jinak může být změna velikosti během vyprazdňování uzlu zablokována. Kompletní doporučení najdete v tématu Osvědčené postupy pro upgrady fondu uzlů AKS.
Prerequisites
- Verze
2026-01-02-previewrozhraní API AKS nebo novější. - Nejnovější verze rozšíření Azure CLI aks-preview.
Změňte velikost fondu uzlů
az aks nodepool update Pomocí příkazu s parametrem --node-vm-size změňte velikost virtuálního počítače existujícího fondu uzlů založených na VMSS:
az aks nodepool update \
--resource-group MyResourceGroup \
--cluster-name MyManagedCluster \
--name nodepool1 \
--node-vm-size Standard_D4s_v3
Ověřování a nepodporované kombinace
Poskytovatel prostředků AKS ověří změnu velikosti požadavku a blokuje nekompatibilní změny velikosti virtuálního počítače. Následující změny nejsou podporovány v rámci změny velikosti VMSS na místě:
- Změna typu řadiče disku (například SCSI na NVMe)
- Změna architektury procesoru (například x64 na ARM64)
- Změna podpory důvěrných výpočetních prostředků (například povolení nebo zakázání SNP)
- Změna generování hypervisoru (například V1 na V2)
- Kombinace změny velikosti s upgradem verze Kubernetes nebo změnou počtu uzlů ve stejné operaci
Pokud vaše cílová velikost virtuálního počítače vyžaduje některou z výše uvedených změn, použijte namísto toho ruční postup cordon a drain popsaný v následujících částech.
Poznámka:
Místní změna velikosti vyžaduje zvýšení kapacity pro zřízení nových uzlů s cílovou velikostí virtuálního počítače před vyprázdněním starých uzlů. Pokud je fond uzlů nakonfigurován s --max-surge 0 (to znamená, že platí --max-unavailable), požadavek na změnu velikosti bude zamítnut s chybou 400 Bad Request. Chcete-li pokračovat, nastavte --max-surge při změně velikosti pomocí alespoň na 1
az aks nodepool update \
--resource-group MyResourceGroup \
--cluster-name MyManagedCluster \
--name nodepool1 \
--node-vm-size Standard_D4s_v3 \
--max-surge 33%
a po dokončení změny velikosti volitelně obnovte původní --max-surge hodnoty a --max-unavailable hodnoty.
Vytvoření nového fondu uzlů s požadovanou skladovou jednotkou
Poznámka:
Každý cluster AKS musí obsahovat alespoň jeden fond systémových uzlů s alespoň jedním uzlem. V tomto příkladu použijeme --mode možnost System k přidání fondu systémových uzlů k nahrazení fondu systémových uzlů, u kterého chceme změnit velikost.
Režim fondu uzlů můžete kdykoli aktualizovat. Fond uzlů uživatele můžete přidat také nastavením --mode na User.
Při změně velikosti nezapomeňte zvážit všechny požadavky na úlohy, jako jsou zóny dostupnosti, a odpovídajícím způsobem nakonfigurovat fond uzlů VMSS. Možná budete muset upravit následující příkaz tak, aby co nejlépe vyhovoval vašim potřebám. Úplný seznam možností konfigurace najdete na az aks nodepool add referenční stránce.
Pomocí příkazu vytvořte nový fond
az aks nodepool adduzlů. V tomto příkladu vytvoříme nový fond uzlů semynodepooltřemi uzly aStandard_DS3_v2skladovou jednotkou virtuálního počítače pro nahrazení existujícího fondu uzlů,nodepool1který máStandard_DS2_v2skladovou položku virtuálního počítače.az aks nodepool add \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name mynodepool \ --node-count 3 \ --node-vm-size Standard_DS3_v2 \ --mode System \ --no-waitVytvoření nového fondu uzlů trvá několik minut.
Pomocí příkazu
kubectl get nodeszjistěte stav nového fondu uzlů.kubectl get nodesVýstup by měl vypadat podobně jako v následujícím příkladu výstupu, který zobrazuje nový fond
mynodepooluzlů i existující fondnodepool1uzlů:NAME STATUS ROLES AGE VERSION aks-mynodepool-98765432-vmss000000 Ready agent 23m v1.21.9 aks-mynodepool-98765432-vmss000001 Ready agent 23m v1.21.9 aks-mynodepool-98765432-vmss000002 Ready agent 23m v1.21.9 aks-nodepool1-12345678-vmss000000 Ready agent 10d v1.21.9 aks-nodepool1-12345678-vmss000001 Ready agent 10d v1.21.9 aks-nodepool1-12345678-vmss000002 Ready agent 10d v1.21.9
Vymezit existující uzly
Ohraničení označuje zadané uzly jako neplánovatelné a zabrání přidávání dalších podů do těchto uzlů.
Získejte názvy uzlů, které chcete odebrat, pomocí příkazu
kubectl get nodes.kubectl get nodesVýstup by měl vypadat podobně jako v následujícím příkladu, který znázorňuje uzly v existujícím fondu uzlů
nodepool1, který chcete dát do karantény.NAME STATUS ROLES AGE VERSION aks-nodepool1-12345678-vmss000000 Ready agent 7d21h v1.21.9 aks-nodepool1-12345678-vmss000001 Ready agent 7d21h v1.21.9 aks-nodepool1-12345678-vmss000002 Ready agent 7d21h v1.21.9Obstavit existující uzly pomocí příkazu
kubectl cordona určením požadovaných uzlů v seznamu odděleného mezerami. Například:kubectl cordon aks-nodepool1-12345678-vmss000000 aks-nodepool1-12345678-vmss000001 aks-nodepool1-12345678-vmss000002Výstup by měl vypadat podobně jako v následujícím příkladu, který ukazuje, že uzly jsou uzavřené.
node/aks-nodepool1-12345678-vmss000000 cordoned node/aks-nodepool1-12345678-vmss000001 cordoned node/aks-nodepool1-12345678-vmss000002 cordoned
Vyprázdnění existujících uzlů
Důležité
Pokud chcete úspěšně vyprázdnit uzly a vyřaďte spuštěné pody, ujistěte se, že všechny soubory PDB (PodDisruptionBudget) umožňují přesunutí alespoň jedné repliky podu najednou. Jinak operace vyprázdnění nebo vyřazení selže. Pokud to chcete zkontrolovat, můžete spustit kubectl get pdb -A a ověřit ALLOWED DISRUPTIONS , jestli je aspoň 1 nebo vyšší.
Když vypustíte uzly, pody spuštěné na nich se vyřadí a znovu vytvoří na ostatních plánovatelných uzlech.
Vyprázdněte existující uzly pomocí příkazu
kubectl draina příznaků--ignore-daemonsets--delete-emptydir-data, uveďte požadované uzly v seznamu odděleném mezerami. Například:Důležité
K vyřazení vytvořených
--delete-emptydir-dataacorednspodů AKS se vyžaduje použitímetrics-server. Pokud tento příznak nepoužíváte, zobrazí se chyba. Další informace najdete v dokumentaci k nástroji emptydir.kubectl drain aks-nodepool1-12345678-vmss000000 aks-nodepool1-12345678-vmss000001 aks-nodepool1-12345678-vmss000002 --ignore-daemonsets --delete-emptydir-dataPo dokončení operace vyprázdnění by všechny pody (s výjimkou podů kontrolovaných sadami démonů) měly být spuštěny v novém node poolu. Můžete to ověřit pomocí příkazu
kubectl get pods.kubectl get pods -o wide -A
Řešení potíží s vyřazením podů
Při vyprázdnění uzlů může dojít k následující chybě:
Error when evicting pods/[podname] -n [namespace] (will retry after 5s): Cannot evict pod as it would violate the pod's disruption budget.
Ve výchozím nastavení má váš cluster rozpočty přerušení podu, které spravuje služba AKS (například coredns-pdb nebo konnectivity-agent) s hodnotou MinAvailable1. Pokud jsou například spuštěné dva coredns pody, může být současně přerušen pouze jeden. Zatímco se jeden z nich znovu vytváří a je nedostupný, druhý pod coredns nelze vyřadit kvůli rozpočtu na narušení činnosti podu. Tento problém se vyřeší po naplánování a spuštění počátečního coredns podu, což umožňuje správné vyřazení a opětovné vytvoření druhého podu.
Tip
Zvažte vyprázdnění uzlů jeden po druhém pro plynulejší zkušenost s vyřazováním a abyste se vyhnuli omezení. Další informace naleznete v tématu:
Odebrání existujícího fondu uzlů
Důležité
Když odstraníte fond uzlů, AKS neprovádí izolaci a vyprázdnění. Chcete-li minimalizovat přerušení plánování podů aktuálně spuštěných ve fondu uzlů, který plánujete odstranit, před odstraněním proveďte cordon a vyprázdněte všechny uzly ve fondu uzlů.
Pomocí příkazu
az aks nodepool deleteodstraňte původní fond uzlů.az aks nodepool delete \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name nodepool1Ověřte, že váš cluster AKS má pouze nový fond uzlů a že aplikace a pody běží správně, pomocí příkazu
kubectl get nodes.kubectl get nodesVýstup by měl vypadat jako v následujícím příkladu: zobrazuje pouze nový uzlový fond
mynodepool.NAME STATUS ROLES AGE VERSION aks-mynodepool-98765432-vmss000000 Ready agent 63m v1.21.9 aks-mynodepool-98765432-vmss000001 Ready agent 63m v1.21.9 aks-mynodepool-98765432-vmss000002 Ready agent 63m v1.21.9
Další kroky
Po změně velikosti fondu uzlů pomocí cordonování a vyprázdnění se dozvíte více o používání více uzlových fondů.