přehled škálování Azure Kubernetes Service (AKS) – HPA, VPA, automatické škálování clusteru a KEDA

Při spouštění aplikací v Azure Kubernetes Service (AKS) můžete škálovat pody, prostředky podů, uzly nebo úlohy řízené událostmi tak, aby odpovídaly změnám v poptávce. AKS podporuje ruční škálování, horizontální automatické škálování podů (HPA), vertikální automatické škálování podů (VPA), automatické škálování clusteru, automatické škálování řízené událostmi v Kubernetes (KEDA), automatické zřizování uzlů a navýšení kapacity při špičce s využitím Azure Container Instances (ACI).

Volba správné metody škálování

Metoda škálování Nejlepší pro Klíčová metrika Guide
Horizontal Pod Autoscaler (HPA) Bezstavové nebo dělitelné úlohy s proměnlivou poptávkou Využití procesoru, RPS, hloubka fronty Kdy mám v Kubernetes používat horizontální automatické škálování podů (HPA)?
Vertikální automatické škálování podů (VPA) Úlohy, které nelze paralelizovat; správné dimenzování požadavků podu na prostředky Využití prostředků procesoru a paměti Použití funkce Vertical Pod Autoscaler v AKS
Automatické škálování clusteru Kapacita na úrovni uzlu, když pody zůstávají ve stavu Pending Čekající pody Použití automatického škálování clusteru v AKS
Automatické zřizování uzlů (NAP) Čekající úlohy, které potřebují správnou kapacitu virtuálního počítače Čekající požadavky na prostředky podu Přehled automatického zřizování uzlů
KEDA Úlohy řízené událostmi; Vyžaduje se škálování na nulu. Délka fronty, nevyřízené události Přehled doplňku KEDA
Nárazové škálování ACI Linuxové úlohy s nárazovou poptávkou, které splňují omezení virtuálních uzlů Nárazové zatížení Vytváření virtuálních uzlů pomocí Azure Container Instances

Kdy použít každou metodu škálování

  • Použijte HPA, když vaše úloha může běžet ve více identických replikách a zatížení kolísá v závislosti na využití CPU, paměti nebo rychlosti požadavků.
  • Použijte VPA, když vaši pracovní zátěž nelze horizontálně škálovat (nelze ji paralelizovat) nebo když potřebujete správně nastavit požadavky na prostředky pro lepší plánování.
  • Použijte Cluster Autoscaler, pokud máte předdefinované fondy uzlů a potřebujete přidat nebo odebrat uzly na základě poptávky nevyřízených podů.
  • Použijte NAP, pokud chcete automatický výběr SKU virtuálního počítače a zřizování uzlů bez nutnosti ručně konfigurovat fondy uzlů.
  • Použijte KEDA, když má škálování reagovat na externí události (fronty, streamy, zprávy) nebo když potřebujete škálování na nulu.
  • Pokud potřebujete rychlé rozšíření kapacity pro linuxové úlohy bez čekání na zřizování virtuálních počítačů (obvykle 2–5 minut), použijte škálování ACI s nárůstem kapacity.

Rychlé doporučení

U většiny produkčních úloh začněte funkcí AKS Automatic, která předem konfiguruje architekturu NAP, VPA a KEDA. Ve službě AKS Standard povolíte a nakonfigurujete tyto funkce explicitně.

Ruční škálování podů nebo uzlů

Repliky a uzly podů můžete ručně škálovat, abyste mohli otestovat, jak vaše aplikace reaguje na změny dostupných prostředků, nebo udržovat pevnou kapacitu. Pokud chcete škálovat ručně, definujte požadovaný počet replik nebo uzlů. Kubernetes pak vytvoří nebo odebere pody, zatímco AKS přidá nebo odebere uzly z příslušného fondu uzlů.

Když snížíte počet uzlů, AKS zavolá příslušné rozhraní API služby Azure Compute pro daný typ výpočetních prostředků clusteru. U clusterů založených na Virtual Machine Scale Sets určuje rozhraní API Virtual Machine Scale Sets, které uzly se mají odebrat. Další informace najdete v Virtual Machine Scale Sets nejčastějších dotazech.

Pokud chcete začít, přečtěte si:

Horizontální automatické škálování podů

HPA používejte, pokud vaše pracovní zátěž může běžet ve více identických replikách a poptávka kolísá. Škáluje se podle CPU nebo paměti, metrik aplikace (počet požadavků za sekundu, latence) nebo metrik externí fronty a nevyřízených položek. Pokud by repliky mohly překročit stávající kapacitu uzlů, použijte předem nakonfigurovanou funkci NAP v AKS Automatic nebo nakonfigurujte Cluster Autoscaler či NAP v AKS Standard.

Nepoužívejte HPA a VPA na stejných metrikách procesoru nebo paměti. Pokud chcete použít obě automatické škálování, použijte VPA v režimu doporučení nebo nakonfigurujte HPA tak, aby používala odlišné vlastní metriky.

Snímek obrazovky s diagramem, který ukazuje, jak funguje horizontální automatické škálování podů v AKS.

Další informace: Kdy mám v Kubernetes používat horizontální automatické škálování podů (HPA)?

Viz také: Použití nástroje Vertical Pod Autoscaler v AKS ke správnému nastavení požadavků podu na CPU a paměť.

Vertikální automatický škálovač podů

Vertikální automatické škálování podů analyzuje využití procesoru a paměti podů a doporučí nebo použije příslušné požadavky na prostředky. Použijte VPA k nastavení správné velikosti úloh, které nelze efektivně škálovat přidáváním replik, nebo ke zlepšení plánování a využití prostředků.

V závislosti na režimu aktualizace může VPA doporučení buď použít při vytváření podů, nebo odstranit a znovu vytvořit pody s aktualizovanými požadavky na prostředky. Před povolením automatického použití změn VPA zkontrolujte požadavky na dostupnost úloh.

Pokud chcete začít, přečtěte si téma Použití vertikálního automatického škálování podů v AKS.

Automatické škálování clusteru

Automatické škálování clusteru upraví počet uzlů ve fondu uzlů podle požadavků na plánování podů. Přidá uzly, když se pody nedají naplánovat kvůli nedostatečné kapacitě uzlů a odebere nevyužité uzly, když se jejich úlohy můžou spouštět jinde.

Snímek obrazovky s diagramem znázorňující, jak automatické škálování clusteru funguje s AKS

Automatické škálování clusteru se běžně používá s HPA. HPA upraví počet replik podů na základě poptávky po úlohách, zatímco automatické škálování clusteru upraví kapacitu uzlů tak, aby vyhovovala těmto podům.

Pokud chcete začít, přečtěte si téma Použití automatického škálování clusteru v AKS.

Události horizontálního navýšení kapacity

Pokud fond uzlů nemá pro pod dostatek výpočetních prostředků, pod zůstane ve stavu Pending. Když automatické škálování clusteru zjistí pody, které nejde naplánovat kvůli omezením prostředků fondu uzlů, zvýší počet uzlů ve fondu uzlů. Kubernetes naplánuje čekající pody poté, co jsou nové uzly zřízeny a připraveny.

Zřizování uzlů založených na virtuálních počítačích může trvat několik minut. U úloh s náhlým nárůstem poptávky zvažte použití virtuálních uzlů a Azure Container Instances.

Události škálování dovnitř

Cluster Autoscaler sleduje, zda nejsou uzly nedostatečně využívané, a vyhodnocuje, zda jejich pody mohou běžet na jiných uzlech. Když už uzel není potřeba, Kubernetes přeplánuje jeho pody a AKS odebere uzel z fondu uzlů.

Operace škálování dovnitř mohou narušit pracovní zátěž, když se pody přesouvají mezi uzly. Spusťte několik replik podů a nakonfigurujte odpovídající kontroly dostupnosti, abyste minimalizovali přerušení.

Automatické škálování řízené událostmi Kubernetes

Automatické škálování řízené událostmi Kubernetes (KEDA) je opensourcová komponenta, která škáluje úlohy na základě událostí. KEDA rozšiřuje Kubernetes o vlastní prostředky, včetně ScaledObject, které popisují, jak by úloha měla reagovat na zdroj událostí nebo metriku.

KEDA je užitečná pro úlohy, které zpracovávají fronty, streamy, zprávy nebo jiné backlogy událostí. Pokud nejsou k dispozici žádné události, může škálovat podporované úlohy na nulu a s růstem backlogu zvýšit počet replik.

Nekombinujte KEDA ScaledObject s samostatnou platformou HPA pro stejnou úlohu. KEDA interně vytváří a používá HPA, takže si autoskalery budou vzájemně konkurovat.

Pokud chcete začít, podívejte se na přehled doplňku KEDA.

Automatické zřizování uzlů

Automatické zřizování uzlů (NAP) používá open-source projekt Karpenter ke zřizování a správě uzlů podle požadavků čekajících podů. Nap vybere odpovídající skladovou položku virtuálního počítače a množství uzlů, aby splňovalo poptávku po úlohách v reálném čase.

NAP pracuje s povolenou sadou SKU virtuálních počítačů a vybírá kapacitu pro nevyřízené úlohy. Můžete definovat limity prostředků a předvolby plánování, abyste mohli řídit, jak zřizuje uzly a distribuuje úlohy.

Škálování a ochrana řídicí roviny

AKS automaticky škáluje komponenty řídicí roviny na základě velikosti clusteru a využití prostředků serveru API. Tyto pokyny se vztahují na AKS Automatic a AKS Standard. Pro produkční nebo škálované úlohy použijte cenovou úroveň Standard nebo Premium.

Kubernetes má multidimenzionální obálku škálování, ve které každý typ prostředku klade různé požadavky na řídicí rovinu. Například objekty Secrets jsou často sledovány více řadiči a pody, které provádějí počáteční volání LIST, a vytvářejí tak větší zatížení řídicí vrstvy než méně často sledované zdroje. Škálování silně v jedné dimenzi může snížit kapacitu v jiných. Například provoz stovek tisíc podů může snížit rychlost změn podů, kterou řídicí rovina dokáže podporovat. Doporučení najdete v osvědčených postupech klienta Kubernetes pro rozsáhlé clustery AKS.

Chcete-li ověřit, zda došlo k navýšení řídicí roviny, zkontrolujte objekt large-cluster-control-plane-scaling-status ConfigMap:

kubectl describe configmap large-cluster-control-plane-scaling-status -n kube-system

Přítomnost tohoto objektu ConfigMap potvrzuje, že AKS vertikálně navyšuje kapacitu řídicí roviny.

Zabezpečení řídicí roviny

Pokud automatické škálování serveru API nezajistí jeho stabilitu při vysokém zatížení, může AKS nasadit spravovanou ochranu serveru API. Tato poslední ochrana omezuje požadavky jiných než systémových klientů, aby zabránila tomu, že řídicí rovina přestane reagovat. Systémově kritická volání serveru API ze součástí, jako je kubelet, nadále fungují.

Chcete-li zjistit, zda byla použita ochrana spravovaného serveru API, zkontrolujte přítomnost aks-managed-apiserver-guardFlowSchema a PriorityLevelConfiguration:

kubectl get flowschemas
kubectl get prioritylevelconfigurations

Ochrana je aktivní, když aks-managed-apiserver-guard se zobrazí v obou výstupech příkazů.

Pokud jsou tyto zdroje k dispozici, viz průvodce odstraňováním potíží se serverem API a etcd, kde najdete pokyny k nápravě.

Rozšíření do služby Azure Container Instances (ACI)

AKS můžete integrovat s Azure Container Instances, abyste zvládli rychlé zvýšení poptávky. Automatické škálování podů může vytvářet více replik než existující fond uzlů, zatímco zřizování dalších uzlů založených na virtuálních počítačích může trvat několik minut. ACI poskytuje výpočetní kapacitu bez nutnosti dalších uzlů virtuálních počítačů.

Virtuální uzly (uzly ACI založené na virtuálních uzlech Kubernetes) podporují pody a uzly Linuxu a vyžadují cluster AKS, který používá Azure sítě CNI. Nepodporují některé běžné scénáře, včetně rozsahů IP adres autorizovaných serverem API, trvalých svazků a deklarací identity trvalých svazků, IPv6 a spravovaných identit připojených k virtuálním uzlům. Před použitím nárazového škálování ACI zkontrolujte omezení virtuálních uzlů .

Snímek obrazovky s diagramem znázorňující, jak Azure Container Instances funguje s AKS

Komponenta virtuálních uzlů AKS je založená na virtuálním kubeletu a představuje ACI jako virtuální uzel Kubernetes. Kubernetes může plánovat způsobilé pody prostřednictvím virtuálního uzlu tak, aby běžely jako instance kontejnerů ACI místo přímo na uzlech virtuálních počítačů AKS.

Virtuální uzly používají jinou podsíť ve stejné virtuální síti jako cluster AKS. Tato konfigurace poskytuje připojení privátní sítě mezi AKS a ACI a zároveň umožňuje ACI fungovat jako logické rozšíření clusteru.

Pomocí následujících prostředků implementujte metodu škálování, která odpovídá vaší úloze:

Další informace o základních konceptech Kubernetes a AKS najdete tady: