Možnosti škálování pro aplikace ve službě Azure Kubernetes Service (AKS)
Při spouštění aplikací v Azure Kubernetes Service (AKS) možná bude potřeba zvětšit nebo zmenšit výpočetní prostředky. Protože se změní počet potřebných instancí aplikací, bude pravděpodobně potřeba změnit i počet základních uzlů Kubernetes. Možná budete také muset rychle zřídit velký počet dalších instancí aplikací.
Tento článek představuje základní koncepty, které vám pomůžou škálovat aplikace v AKS:
- Ruční škálování
- Horizontální automatické škálování podů (HPA)
- Automatické škálování clusteru
- Integrace služby Azure Container Instance (ACI) do AKS
Ruční škálování podů nebo uzlů
Repliky (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ů také umožňuje definovat nastavené množství prostředků, které se mají použít k udržování pevných nákladů, jako je například počet uzlů. Pokud chcete ručně škálovat, nadefinujte počet replik nebo uzlů. Rozhraní API Kubernetes pak naplánuje vytváření dalších podů nebo vyprázdnění uzlů na základě této repliky nebo počtu uzlů.
Při vertikálním snížení kapacity uzlů volá rozhraní API Kubernetes příslušné rozhraní API služby Azure Compute 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čů je logika pro výběr uzlů, které se mají odebrat, určená rozhraním API škálovacích sad virtuálních počítačů. Další informace o tom, jak se vybírají uzly pro odebrání při vertikálním snížení kapacity, najdete v nejčastějších dotazech k škálovacím sadám virtuálních počítačů.
Pokud chcete začít s ručním škálováním podů a uzlů, přečtěte si téma Škálování aplikací v AKS.
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 replik. Ve výchozím nastavení horizontální automatické škálování podů kontroluje rozhraní API pro metriky každých 15 sekund všechny požadované změny v počtu replik, ale rozhraní API metrik načítá data z Kubeletu každých 60 sekund. V podstatě se hpa 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íží. Horizontální automatické škálování podů funguje s clustery AKS, které nasadily Server metrik pro Kubernetes 1.8 nebo novější.
Při konfiguraci horizontálního automatického škálování podů pro dané nasazení definujete minimální a maximální počet replik, které lze spustit. Definujete také metriku pro monitorování a založit na všech rozhodnutích 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.
Cooldown událostí škálování
Vzhledem k tomu, že se horizontální automatické škálování podů 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 horizontální automatické škálování podů změní počet replik před tím, než by předchozí událost škálování mohla přijmout úlohu aplikace a požadavky na prostředky 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í horizontální automatické škálování podů čekat po události škálování, než se může aktivovat jiná událost š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 od Kubernetes 1.12 nedochází ke zpoždění, ale zpoždění událostí vertikálního snížení kapacity je ve výchozím nastavení 5 minut.
V současné době není možné tyto hodnoty cooldownu vyladit z výchozího nastavení.
Automatické škálování clusteru
Aby kubernetes reagoval na měnící se požadavky na pody, má automatické škálování clusteru, které upravuje 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 každých 10 sekund kontroluje server rozhraní API metrik, jestli neobsahují požadované změny v počtu uzlů. Pokud automatické škálování clusteru určí, že je potřeba provést změnu, 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, které používají Kubernetes verze 1.10.x nebo vyšší.
Automatické škálování clusteru se obvykle používá společně s horizontálním automatickým škálováním podů. Při zkombinování se horizontální automatické škálování podů zvýší nebo sníží počet podů na základě požadavků aplikací a automatické škálování clusteru upraví počet uzlů podle potřeby, aby se tyto další pody spustily odpovídajícím způsobem.
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 pokračovat procesem plánování. Pod nejde spustit, pokud nejsou ve fondu uzlů k dispozici další výpočetní prostředky.
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 poskytovaly další výpočetní prostředky. Když jsou tyto další uzly úspěšně nasazené a dostupné pro použití v rámci fondu uzlů, naplánují se jejich spuštění na nich.
Pokud vaše aplikace potřebuje rychle škálovat, některé pody můžou zůstat ve stavu čekající na naplánování, dokud další uzly nasazené automatickým škálováním clusteru nebudou moct plánované pody přijmout. U aplikací, které mají vysoké požadavky na shluk, můžete škálovat s virtuálními uzly a Azure Container Instances.
Škálování událostí
Automatické škálování clusteru také monitoruje stav plánování podů pro uzly, které v nedávné době nepřijaly nové požadavky na plánování. Tento scénář indikuje, že fond uzlů má více výpočetních prostředků, než je potřeba, a počet uzlů se dá snížit.
U uzlu, který překročí prahovou hodnotu pro to, že už není potřeba po dobu 10 minut, je ve výchozím nastavení naplánováno odstranění. Když nastane tato situace, je naplánováno spouštění podů na jiných uzlech ve fondu uzlů a automatické škálování clusteru snižuje počet uzlů.
U aplikací může dojít k určité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.
Shluk na Azure Container Instances
Pokud chcete cluster AKS rychle škálovat, můžete ho integrovat s Azure Container Instances (ACI). Kubernetes má integrované komponenty pro škálování repliky a počtu uzlů. Pokud ale vaše aplikace potřebuje rychle škálovat, může horizontální automatické škálování podů naplánovat více podů, než můžou 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 k nasazení dalších 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 na nich spouštět pody.
ACI umožňuje rychle nasadit instance kontejneru 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, se nainstaluje do clusteru AKS, který prezentuje 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 ve vašem clusteru AKS.
Vaše aplikace nevyžaduje žádné úpravy, aby bylo možné používat virtuální uzly. Nasazení se můžou škálovat napříč službami AKS a ACI a bez prodlevy, protože automatické škálování clusteru nasazuje do clusteru AKS nové uzly.
Virtuální uzly se nasazují do další podsítě ve stejné virtuální síti jako cluster AKS. Tato konfigurace virtuální sítě umožňuje zabezpečit provoz mezi ACI a AKS. Podobně jako cluster AKS je instance ACI zabezpečeným logickým výpočetním prostředkem, který je izolovaný od ostatních uživatelů.
Další kroky
Pokud chcete začít se škálováním aplikací, nejprve postupujte podle pokynů v rychlém startu k vytvoření clusteru AKS pomocí Azure CLI. Potom můžete začít ručně nebo automaticky škálovat aplikace v clusteru AKS:
- 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
Další informace o základních konceptech Kubernetes a AKS najdete v následujících článcích: