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čů.
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ů.
Azure Kubernetes Service