Možnosti škálování pro aplikace ve službě Azure Kubernetes Service (AKS)

Při spouštění aplikací ve službě Azure Kubernetes Service (AKS) možná budete muset zvýšit nebo snížit množství výpočetních prostředků. Když změníte počet instancí aplikací, které máte, možná budete muset změnit počet základních uzlů Kubernetes. Možná budete muset zřídit také velký počet dalších instancí aplikace.

Tento článek představuje základní koncepty škálování aplikací AKS, včetně ručního škálování podů nebo uzlů, použití horizontálního automatického škálování podů, použití automatického škálování clusteru a integrace se službou Azure Container Instances (ACI).

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

Repliky nebo pody a uzly můžete ručně škálovat a otestovat, jak vaše aplikace reaguje na změnu dostupných prostředků a stavu. Ruční škálování prostředků umožňuje definovat nastavené množství prostředků, které se mají použít k údržbě pevných nákladů, například počtu uzlů. Pokud chcete ručně škálovat, definujte počet replik nebo uzlů. Rozhraní API Kubernetes pak naplánuje vytváření dalších podů nebo vyprazdňování uzlů na základě počtu replik nebo uzlů.

Při vertikálním snížení kapacity uzlů volá rozhraní API Kubernetes příslušné výpočetní rozhraní API vázané na typ výpočetních prostředků používaný vaším clusterem. Například u clusterů založených na škálovacích sadách virtuálních počítačů určuje rozhraní API služby Virtual Machine Scale Sets, které uzly se mají odebrat. Další informace o tom, jak jsou uzly vybrány pro odebrání vertikálního snížení kapacity, najdete v nejčastějších dotazech ke škálovacím sadám virtuálních počítačů.

Pokud chcete začít s ručním škálováním uzlů, podívejte se na ručně škálovací uzly v clusteru AKS. Pokud chcete počet podů škálovat ručně, přečtěte si příkaz kubectl scale.

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

Kubernetes pomocí horizontálního automatického škálování podů (HPA) monitoruje poptávku po prostředcích a automaticky škáluje počet podů. Ve výchozím nastavení HPA kontroluje rozhraní API metrik každých 15 sekund, jestli neobsahují požadované změny v počtu replik, a rozhraní API metrik načítá data z Kubeletu každých 60 sekund. Takže HPA se aktualizuje každých 60 sekund. Pokud se vyžadují změny, počet replik se odpovídajícím způsobem zvýší nebo sníží. HPA funguje s clustery AKS, které nasadily server metrik pro Kubernetes verze 1.8 a vyšší.

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

Při konfiguraci HPA pro dané nasazení definujete minimální a maximální počet replik, které se dají spustit. Metriku také definujete, abyste mohli monitorovat a založit všechna rozhodnutí o škálování, jako je využití procesoru.

Pokud chcete začít s horizontálním automatickým škálováním podů v AKS, přečtěte si téma Automatické škálování podů v AKS.

Snížení kapacity událostí škálování

Vzhledem k tomu, že HPA se efektivně aktualizuje každých 60 sekund, nemusí se předchozí události škálování úspěšně dokončit před provedením další kontroly. Toto chování může způsobit, že HPA změní počet replik před předchozí událostí škálování může přijímat úlohy aplikace a požadavky na prostředky, aby se odpovídajícím způsobem upravily.

Pokud chcete minimalizovat události závodu, nastaví se hodnota zpoždění. Tato hodnota definuje, jak dlouho musí HPA čekat po události škálování před aktivací jiné události škálování. Toto chování umožňuje, aby se nový počet replik projevil a rozhraní API metrik odráželo distribuovanou úlohu. U událostí vertikálního navýšení kapacity ve verzi Kubernetes 1.12 však není žádné zpoždění, výchozí zpoždění událostí vertikálního snížení kapacity je 5 minut.

Automatické škálování clusteru

Aby bylo potřeba reagovat na měnící se požadavky podů, automatické škálování clusteru Kubernetes upraví počet uzlů na základě požadovaných výpočetních prostředků ve fondu uzlů. Ve výchozím nastavení automatické škálování clusteru kontroluje server rozhraní API metrik každých 10 sekund, aby se všechny požadované změny v počtu uzlů změnily. Pokud automatické škálování clusteru zjistí, že se vyžaduje změna, počet uzlů v clusteru AKS se odpovídajícím způsobem zvýší nebo sníží. Automatické škálování clusteru funguje s clustery AKS s podporou RBAC Kubernetes, na kterých běží Kubernetes 1.10.x nebo vyšší.

Automatické škálování clusteru Kubernetes

Automatické škálování clusteru se obvykle používá společně s horizontálním automatickým škálováním podů. V kombinaci se horizontální automatické škálování podů zvýší nebo sníží počet podů na základě poptávky aplikace a automatické škálování clusteru upraví počet uzlů tak, aby spouštět více podů.

Pokud chcete začít s automatickým škálováním clusteru v AKS, přečtěte si téma Automatické škálování clusteru v AKS.

Horizontální navýšení kapacity událostí

Pokud uzel nemá dostatek výpočetních prostředků ke spuštění požadovaného podu, nemůže tento pod projít procesem plánování. Pod nejde spustit, pokud není ve fondu uzlů k dispozici více výpočetních prostředků.

Když si automatické škálování clusteru všimne podů, které nejde naplánovat kvůli omezením prostředků fondu uzlů, zvýší se počet uzlů ve fondu uzlů, aby poskytoval další výpočetní prostředky. Pokud jsou uzly úspěšně nasazené a dostupné pro použití ve fondu uzlů, jsou pody naplánované tak, aby na nich běžely.

Pokud vaše aplikace potřebuje rychle škálovat, můžou některé pody zůstat ve stavu, který čeká na naplánování, dokud automatické škálování clusteru nebude moct přijmout další uzly nasazené automatickým škálováním clusteru. U aplikací s vysokými požadavky na nárůst kapacity můžete škálovat s virtuálními uzly a službou Azure Container Instances.

Škálování v událostech

Automatické škálování clusteru také monitoruje stav plánování podů pro uzly, které nedávno nepřijaly nové žádosti o plánování. Tento scénář označuje, že fond uzlů má více výpočetních prostředků, než je potřeba, a počet uzlů je možné snížit. Ve výchozím nastavení jsou uzly, které projdou prahovou hodnotou, které už nejsou potřeba po dobu 10 minut, naplánováno odstranění. V takovém případě jsou pody naplánované tak, aby běžely na jiných uzlech ve fondu uzlů a automatické škálování clusteru snižuje počet uzlů.

U vašich aplikací může dojít k nějakému přerušení, protože pody jsou naplánované na různých uzlech, když automatické škálování clusteru sníží počet uzlů. Pokud chcete minimalizovat přerušení, vyhněte se aplikacím, které používají jednu instanci podu.

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

Automatické škálování řízené událostmi Kubernetes (KEDA) je opensourcová komponenta pro automatické škálování úloh řízené událostmi. Škáluje úlohy dynamicky na základě počtu přijatých událostí. KEDA rozšiřuje Kubernetes o vlastní definici prostředků (CRD), označovanou jako ScaledObject, a popisuje, jak by se aplikace měly škálovat v reakci na konkrétní provoz.

Škálování KEDA je užitečné ve scénářích, kdy úlohy přijímají nárůsty provozu nebo zpracovávají velké objemy dat. Liší se od horizontálního automatického škálování podů, protože KEDA je řízená událostmi a škáluje se na základě počtu událostí, zatímco HPA je řízená metrikami na základě využití prostředků (například procesoru a paměti).

Pokud chcete začít s doplňkem KEDA v AKS, podívejte se na přehled KEDA.

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

Pokud chcete rychle škálovat cluster AKS, můžete se integrovat se službou Azure Container Instances (ACI). Kubernetes má integrované komponenty pro škálování počtu replik a uzlů. Pokud ale vaše aplikace potřebuje rychle škálovat, horizontální automatické škálování podů může naplánovat více podů, než může poskytnout stávající výpočetní prostředky ve fondu uzlů. Pokud je nakonfigurovaný, tento scénář by pak aktivoval automatické škálování clusteru, aby nasadil více uzlů ve fondu uzlů, ale může trvat několik minut, než se tyto uzly úspěšně zřídí a umožní plánovači Kubernetes spouštět pody.

Nárazové škálování Kubernetes na ACI

ACI umožňuje rychle nasadit instance kontejnerů bez dalších režijních nákladů na infrastrukturu. Když se připojíte pomocí AKS, ACI se stane zabezpečeným logickým rozšířením clusteru AKS. Komponenta virtuálních uzlů, která je založená na virtuálním Kubeletu, je nainstalovaná ve vašem clusteru AKS, který představuje ACI jako virtuální uzel Kubernetes. Kubernetes pak může plánovat pody, které běží jako instance ACI prostřednictvím virtuálních uzlů, ne jako pody na uzlech virtuálních počítačů přímo v clusteru AKS.

Aplikace nevyžaduje žádné úpravy použití virtuálních uzlů. Vaše nasazení se můžou škálovat napříč AKS a ACI a bez zpoždění, protože automatické škálování clusteru nasazuje nové uzly v clusteru AKS.

Virtuální uzly se nasazují do jiné podsítě ve stejné virtuální síti jako cluster AKS. Tato konfigurace virtuální sítě zabezpečuje provoz mezi ACI a AKS. Podobně jako cluster AKS je instance ACI zabezpečeným logickým výpočetním prostředkem izolovaným od ostatních uživatelů.

Další kroky

Pokud chcete začít se škálováním aplikací, projděte si následující zdroje informací:

  • Ruční škálování podů nebo uzlů
  • Použití horizontálního automatického škálování podů
  • Použití automatického škálování clusteru
  • Použití doplňku [Kubernetes Event-driven Autoscaling (KEDA) ][keda-addon]

Další informace o základních konceptech Kubernetes a AKS najdete v následujících článcích: