Automatické škálování clusteru pro splnění požadavků aplikace ve službě Azure Kubernetes Service (AKS)

Aby se zajistilo splnění požadavků aplikace ve službě Azure Kubernetes Service (AKS), možná budete muset upravit počet uzlů, které spouštějí vaše úlohy. Součást automatického škálování clusteru může ve vašem clusteru sledovat lusky, které není možné naplánovat z důvodu omezení prostředků. Při zjištění problémů se počet uzlů ve fondu uzlů zvyšuje, aby splňoval požadavek na aplikaci. Uzly jsou také pravidelně zkontrolovány na chybějící běžící lusky s počtem uzlů, které se pak v případě potřeby snížily. Díky této možnosti horizontálního navýšení nebo snížení počtu uzlů v clusteru AKS můžete spustit efektivní a cenově výhodné cluster.

V tomto článku se dozvíte, jak povolit a spravovat automatické škálování clusteru v clusteru AKS.

Než začnete

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

O automatickém škálování clusteru

Pro úpravu požadavků aplikace, například mezi Workday a večer nebo na víkendu, clustery často potřebují způsob automatického škálování. Clustery AKS se můžou škálovat jedním ze dvou způsobů:

  • Automatické škálování clusteru sleduje lusky, které není možné naplánovat na uzlech z důvodu omezení prostředků. Cluster pak automaticky zvýší počet uzlů.
  • Horizontální navýšení pod AutoScale používá server metrik v clusteru Kubernetes k monitorování požadavků na prostředky v luskech. Pokud aplikace potřebuje více prostředků, počet lusků se automaticky zvýší, aby splňovala požadavky.

Automatické škálování clusteru a horizontální navýšení se často spolupracuje na podporu požadovaných požadavků aplikace.

V případě potřeby můžete také snížit počet lusků a uzlů, a to jak horizontální, tak i automatické škálování clusteru. Automatické škálování clusteru snižuje počet uzlů v případě nevyužité kapacity v časovém intervalu. Lusky na uzlu, který se má odebrat pomocí automatického škálování clusteru, se bezpečně naplánovaly jinde v clusteru. V případě, že se nedá přesunout lusky, například v následujících situacích, není možné automatické škálování clusteru zmenšit.

  • Objekt pod je přímo vytvořený a není zálohovaný objektem kontroleru, jako je například nasazení nebo sada replik.
  • Rozpočet přerušení pod přerušením (PDB) je příliš omezující a neumožňuje, aby počet lusků klesl pod určitou prahovou hodnotu.
  • Uzel pod používá selektory uzlů nebo spřažení, které nelze akceptovat, pokud je naplánováno na jiném uzlu.

Další informace o tom, jak se automatické škálování clusteru nedá škálovat, najdete v tématu Jaké typy lusků můžou zabránit automatickému škálování clusteru v odebírání uzlu .

Automatické škálování clusteru používá parametry spouštění pro věci, jako jsou časové intervaly mezi událostmi škálování a mezními hodnotami prostředků. Další informace o tom, jaké parametry používá nástroj pro automatické škálování clusteru, najdete v tématu použití profilu automatického škálování.

Cluster a horizontální, pod kterými můžou spolupracovníci spolupracovat a často se obě nasazují v clusteru. V kombinaci se horizontální automatické škálování pod ním zaměřuje na spouštění počtu lusků potřebných pro splnění požadavků aplikace. Automatické škálování clusteru se zaměřuje na spouštění počtu uzlů potřebných k podpoře naplánovaných lusků.

Poznámka

Ruční škálování je při použití automatického škálování clusteru zakázané. Určete požadovaný počet uzlů, aby měl automatické škálování clusteru. Pokud chcete cluster ručně škálovat, zakažte automatické škálování clusteru.

Vytvoření clusteru AKS a povolení automatického škálování clusteru

Pokud potřebujete vytvořit cluster AKS, použijte příkaz AZ AKS Create . K povolení a konfiguraci automatického škálování clusteru ve fondu uzlů pro cluster použijte --enable-cluster-autoscaler parametr a určete uzel --min-count a --max-count .

Důležité

Automatické škálování clusteru je komponenta Kubernetes. I když cluster AKS používá pro uzly sadu škálování virtuálního počítače, nepovolujte ručně ani neupravujte nastavení automatického škálování sady škálování v Azure Portal nebo pomocí Azure CLI. Umožněte, aby modul automatického škálování clusteru Kubernetes spravoval požadovaná nastavení škálování. Další informace najdete v tématu Změna prostředků AKS ve skupině prostředků uzlu?

Následující příklad vytvoří cluster AKS s jedním fondem uzlů, který je zálohovaný sadou škálování virtuálního počítače. Povoluje taky automatické škálování clusteru ve fondu uzlů pro cluster a nastavuje minimálně 1 a maximálně 3 uzly:

# First create a resource group
az group create --name myResourceGroup --location eastus

# Now create the AKS cluster and enable the cluster autoscaler
az aks create \
  --resource-group myResourceGroup \
  --name myAKSCluster \
  --node-count 1 \
  --vm-set-type VirtualMachineScaleSets \
  --load-balancer-sku standard \
  --enable-cluster-autoscaler \
  --min-count 1 \
  --max-count 3

Vytvoření clusteru a konfigurace nastavení automatického škálování clusteru trvá několik minut.

Aktualizace stávajícího clusteru AKS pro povolení automatického škálování clusteru

Pomocí příkazu AZ AKS Update povolte a nakonfigurujte pro existující cluster automatické škálování clusteru ve fondu uzlů. Použijte --enable-cluster-autoscaler parametr a zadejte uzel --min-count a --max-count .

Důležité

Automatické škálování clusteru je komponenta Kubernetes. I když cluster AKS používá pro uzly sadu škálování virtuálního počítače, nepovolujte ručně ani neupravujte nastavení automatického škálování sady škálování v Azure Portal nebo pomocí Azure CLI. Umožněte, aby modul automatického škálování clusteru Kubernetes spravoval požadovaná nastavení škálování. Další informace najdete v tématu Změna prostředků AKS ve skupině prostředků uzlu?

V následujícím příkladu se aktualizuje existující cluster AKS, aby se povolilo automatické škálování clusteru ve fondu uzlů pro cluster, a je nastavené minimum na 1 a maximálně 3 uzly:

az aks update \
  --resource-group myResourceGroup \
  --name myAKSCluster \
  --enable-cluster-autoscaler \
  --min-count 1 \
  --max-count 3

Aktualizace clusteru a konfigurace nastavení automatického škálování clusteru trvá několik minut.

Změna nastavení automatického škálování clusteru

Důležité

Pokud máte ve svém clusteru AKS více fondů uzlů, přeskočte do části Automatické škálování s více fondy agentů. Clustery s více fondy agentů vyžadují použití az aks nodepool sady příkazů ke změně vlastností specifických pro fond uzlů místo az aks .

Pokud jste v předchozím kroku vytvořili cluster AKS nebo aktualizovali existující fond uzlů, byl minimální počet uzlů pro automatické škálování clusteru nastavený na 1 a maximální počet uzlů byl nastavený na 3. Jak vaše aplikace vyžaduje změnu, možná budete muset upravit počet uzlů automatického škálování clusteru.

Chcete-li změnit počet uzlů, použijte příkaz AZ AKS Update .

az aks update \
  --resource-group myResourceGroup \
  --name myAKSCluster \
  --update-cluster-autoscaler \
  --min-count 1 \
  --max-count 5

Výše uvedený příklad aktualizuje automatické škálování clusteru ve fondu s jedním uzlem v myAKSCluster na minimálně 1 a maximálně 5 uzlů.

Poznámka

Automatické škálování clusteru provádí rozhodnutí o škálování na základě minimálního a maximálního počtu nastaveného v každém fondu uzlů, ale neuplatňuje je po aktualizaci počtu min nebo max. Například nastavení minimálního počtu na hodnotu 5, pokud je počet aktuálních uzlů na hodnotu 3, nebude fond okamžitě škálovat na 5. Pokud má minimální počet u fondu uzlů hodnotu vyšší, než je aktuální počet uzlů, bude dodrženo nové nastavení min nebo Max, pokud jsou přítomna dostatečná unschedulable lusky, která by vyžadovala 2 nové další uzly a aktivovala událost automatického škálování. Po události škálování jsou dodrženy nové limity počtu.

Monitorujte výkon svých aplikací a služeb a upravte počty uzlů automatického škálování clusteru tak, aby odpovídaly požadovanému výkonu.

Použití profilu automatického škálování

Můžete taky nakonfigurovat podrobnější informace o automatickém škálování clusteru změnou výchozích hodnot v profilu automatického škálování na úrovni clusteru. Například událost horizontálního navýšení kapacity proběhne po využívaném uzlu po 10 minutách. Pokud máte úlohy, které byly spuštěny každých 15 minut, můžete změnit profil automatického škálování tak, aby se v části využívané uzly po 15 nebo 20 minutách změnila velikost. Pokud povolíte automatické škálování clusteru, použije se výchozí profil, pokud neurčíte jiné nastavení. Profil automatického škálování clusteru má následující nastavení, která můžete aktualizovat:

Nastavení Popis Výchozí hodnota
Kontrola – interval Jak často se cluster znovu vyhodnocuje pro horizontální navýšení nebo snížení kapacity 10 sekund
horizontální navýšení kapacity – zpoždění po přidání Jak dlouho po horizontálním navýšení kapacity dotrvají zkušební obnovení 10 minut
horizontální navýšení kapacity – zpoždění po odstranění Doba, po kterou se odstraní po odstranění uzlu, které pokračuje ve zkušebním měřítku Kontrola – interval
horizontální navýšení kapacity – zpoždění po chybě Jak dlouho po selhání horizontálního navýšení kapacity se zkušební verze obnoví 3 minuty
horizontální navýšení kapacity – nepotřebné Jak dlouho by měl uzel být nepotřebný, než bude mít nárok na horizontální navýšení kapacity 10 minut
horizontální navýšení kapacity – nečitelný čas Doba, po kterou by měl být nečitelný uzel nutný, než bude mít nárok na horizontální navýšení kapacity 20 minut
škála-snížení využití – prahová hodnota Úroveň využití uzlu definovaná jako součet požadovaných prostředků dělený kapacitou, pod kterou je možné uzel zvážit pro horizontální navýšení kapacity 0,5
Max – řádné – ukončení – s Maximální počet sekund, po které bude automatické škálování clusteru čekat po ukončení při pokusu o horizontální navýšení kapacity uzlu 600 sekund
rovnováha – podobný uzel – skupiny Detekuje podobné fondy uzlů a vyrovnává počet uzlů mezi nimi. false (nepravda)
rozbalovací Typ rozšíření fondu uzlů, které se má použít při horizontálním navýšení kapacity Možné hodnoty: most-pods , random , least-waste , priority vybraných
Přeskočení uzlů – s-Local-Storage Pokud ano, nebude automatické škálování clusteru nikdy odstraňovat uzly s lusky s místním úložištěm, například EmptyDir nebo HostPath. true
Skip-Node-with-System-lusky Pokud ano, nebude automatické škálování clusteru nikdy odstraňovat uzly s lusky z Kube-System (kromě DaemonSet nebo zrcadlových lusků). true
Max – prázdné – hromadné odstranění Maximální počet prázdných uzlů, které je možné odstranit současně 10 uzlů
nové-pod-škálovat – zpoždění U scénářů, jako je například škálování na úrovni shluku/dávky, kdy nechcete, aby certifikační autorita fungovala dříve, než může Plánovač Kubernetes naplánovat všechny lusky, můžete certifikační autoritě sdělit, aby neplánované lusky ignorovaly dřív, 0 sekund
Max-Total-unreadal-PERCENTAGE Maximální procento nepřečtených uzlů v clusteru Po překročení tohoto procenta ukončí certifikační autorita operace. 45 %
Max-Node-provision-Time Maximální doba, po kterou bude automatické škálování čekat na zřízení uzlu 15 minut
ok – celkem – nepřečtené – počet Počet povolených nepřečtených uzlů bez ohledu na maximum-Total-unreadal-PERCENTAGE 3 uzly

Důležité

Profil automatického škálování clusteru má vliv na všechny fondy uzlů, které používají automatické škálování clusteru. Nemůžete nastavit profil automatického škálování na jeden fond uzlů.

Profil automatického škálování clusteru vyžaduje 2.11.1 nebo novější verzi Azure CLI. Pokud potřebujete instalaci nebo upgrade, přečtěte si téma Instalace Azure CLI.

Nastavení profilu automatického škálování clusteru v existujícím clusteru AKS

Pomocí příkazu AZ AKS Update s parametrem cluster-autoscaleer-Profile nastavte profil automatického škálování clusteru v clusteru. Následující příklad konfiguruje nastavení intervalu kontroly jako 30 s v profilu.

az aks update \
  --resource-group myResourceGroup \
  --name myAKSCluster \
  --cluster-autoscaler-profile scan-interval=30s

Pokud povolíte automatické škálování clusteru u fondů uzlů v clusteru, budou tyto clustery také používat profil automatického škálování clusteru. Příklad:

az aks nodepool update \
  --resource-group myResourceGroup \
  --cluster-name myAKSCluster \
  --name mynodepool \
  --enable-cluster-autoscaler \
  --min-count 1 \
  --max-count 3

Důležité

Když nastavíte profil automatického škálování clusteru, začnou být všechny existující fondy uzlů s povoleným nástrojem automatického škálování clusteru hned používat profil.

Nastavení profilu automatického škálování clusteru při vytváření clusteru AKS

Můžete také použít parametr cluster-autoscaleer-Profile při vytváření clusteru. Příklad:

az aks create \
  --resource-group myResourceGroup \
  --name myAKSCluster \
  --node-count 1 \
  --enable-cluster-autoscaler \
  --min-count 1 \
  --max-count 3 \
  --cluster-autoscaler-profile scan-interval=30s

Výše uvedený příkaz vytvoří cluster AKS a pro profil automatického škálování pro celé clustery definuje interval kontroly na 30 sekund. Příkaz také umožňuje automatické škálování clusteru v počátečním fondu uzlů, nastavuje minimální počet uzlů na 1 a maximální počet uzlů na 3.

Resetovat profil automatického škálování clusteru na výchozí hodnoty

Pomocí příkazu AZ AKS Update resetujete profil automatického škálování clusteru v clusteru.

az aks update \
  --resource-group myResourceGroup \
  --name myAKSCluster \
  --cluster-autoscaler-profile ""

Zakázat automatické škálování clusteru

Pokud už nechcete používat automatické škálování clusteru, můžete ho zakázat pomocí příkazu AZ AKS Update , který specifikuje --disable-cluster-autoscaler parametr. Když je automatické škálování clusteru zakázané, uzly se neodeberou.

az aks update \
  --resource-group myResourceGroup \
  --name myAKSCluster \
  --disable-cluster-autoscaler

Po zakázání automatického škálování clusteru můžete ručně škálovat cluster pomocí příkazu AZ AKS Scale . Použijete-li automatické škálování vodorovně pod, tato funkce bude nadále běžet se zakázaným nástrojem pro automatické škálování clusteru, ale v případě, že se všechny prostředky uzlů používají, může dojít k neočekávanému ukončení lusků.

Opětovné povolení automatického škálování zakázaného clusteru

Pokud chcete znovu povolit automatické škálování clusteru v existujícím clusteru, můžete ho znovu povolit pomocí příkazu AZ AKS Update , a to zadáním --enable-cluster-autoscaler --min-count parametrů, a --max-count .

Načtení protokolů a stavu automatického škálování clusteru

Chcete-li diagnostikovat a ladit události automatického škálování, můžete protokoly a stav načíst z doplňku automatického škálování.

AKS spravuje automatické škálování clusteru vaším jménem a spouští ho v rovině spravovaného ovládacího prvku. Můžete povolit uzel roviny řízení a zobrazit protokoly a operace od certifikační autority.

Pokud chcete nakonfigurovat protokoly, které se budou nabízet z automatického škálování clusteru do Log Analytics, postupujte podle těchto kroků.

  1. Nastavte pravidlo pro protokoly prostředků pro nabízení protokolů clusteru – automatického škálování na Log Analytics. Pokyny najdete tady, nezapomeňte zaškrtnout políčko cluster-autoscaler při výběru možností pro protokoly.
  2. Vyberte v clusteru oddíl logs prostřednictvím Azure Portal.
  3. Zadejte následující příklad dotazu do Log Analytics:
AzureDiagnostics
| where Category == "cluster-autoscaler"

Měli byste vidět protokoly podobné následujícímu příkladu, pokud existují protokoly, které se mají načíst.

Protokoly Log Analytics

Automatické škálování clusteru také zapisuje stav do configmap pojmenovaného stavu cluster-autoscaler-status . Chcete-li načíst tyto protokoly, spusťte následující kubectl příkaz. Stav bude hlášen pro každý fond uzlů nakonfigurovaný pomocí automatického škálování clusteru.

kubectl get configmap -n kube-system cluster-autoscaler-status -o yaml

další informace o tom, co se protokoluje pomocí automatického škálování, najdete v nejčastějších dotazech k Kubernetes/automatickému škálování projektu GitHub.

Použití automatického škálování clusteru s povolenými fondy více uzly

Automatické škálování clusteru lze použít společně s povoleným fondy více uzlů . Pomocí tohoto dokumentu se dozvíte, jak povolit více fondů uzlů a přidat další fondy uzlů do existujícího clusteru. Při použití obou funkcí současně povolíte automatické škálování clusteru pro každý fond jednotlivých uzlů v clusteru a můžete každému z nich předat jedinečná pravidla automatického škálování.

V níže uvedeném příkazu se předpokládá, že jste provedli počáteční pokyny dříve v tomto dokumentu a chcete aktualizovat Max-Count fondu uzlů z 3 na 5. Pomocí příkazu AZ AKS nodepool Update aktualizujte nastavení existujícího fondu uzlů.

az aks nodepool update \
  --resource-group myResourceGroup \
  --cluster-name myAKSCluster \
  --name nodepool1 \
  --update-cluster-autoscaler \
  --min-count 1 \
  --max-count 5

Automatické škálování clusteru je možné zakázat pomocí AZ AKS nodepool Update a předáním --disable-cluster-autoscaler parametru.

az aks nodepool update \
  --resource-group myResourceGroup \
  --cluster-name myAKSCluster \
  --name nodepool1 \
  --disable-cluster-autoscaler

Pokud chcete znovu povolit automatické škálování clusteru v existujícím clusteru, můžete ho znovu povolit pomocí příkazu AZ AKS nodepool Update , a to zadáním --enable-cluster-autoscaler --min-count parametrů, a --max-count .

Poznámka

Pokud plánujete používat nástroj pro automatické škálování clusteru s nodepools, který je rozložen na více zón, a využíváte funkce plánování týkající se zón, jako je například naplánování škálovatelného plánu, doporučujeme, abyste měli jednu nodepool na zónu a povolili --balance-similar-node-groups profil prostřednictvím profilu automatického škálování. Tím zajistíte, že se automatické škálování dokončí úspěšně, a zkusíte a zachováte velikosti nodepools rovnováhy.

Další kroky

Tento článek ukazuje, jak automaticky škálovat počet uzlů AKS. K automatickému nastavení počtu lusků, ve kterých běží vaše aplikace, můžete také použít horizontální automatické škálování pod automatickým příchodem. Postup při použití automatického škálování pod horizontálního navýšení najdete v tématu škálování aplikací v AKS.