Opcje skalowania aplikacji w usłudze Azure Kubernetes Service

W przypadku uruchamiania aplikacji w usłudze Azure Kubernetes Service (AKS) może być konieczne zwiększenie lub zmniejszenie ilości zasobów obliczeniowych. Podczas zmieniania liczby wystąpień aplikacji może być konieczna zmiana liczby bazowych węzłów Kubernetes. Może być również konieczne aprowizowania dużej liczby dodatkowych wystąpień aplikacji.

W tym artykule przedstawiono podstawowe pojęcia dotyczące skalowania aplikacji usługi AKS, w tym ręczne skalowanie zasobników lub węzłów przy użyciu narzędzia autoskalowania zasobnika poziomego, przy użyciu narzędzia skalowania automatycznego klastra i integrowanie z Azure Container Instances (ACI).

Ręczne skalowanie zasobników lub węzłów

Repliki lub zasobniki i węzły można ręcznie skalować, aby sprawdzić, jak aplikacja reaguje na zmianę dostępnych zasobów i stanu. Ręczne skalowanie zasobów umożliwia zdefiniowanie ustawionej ilości zasobów do użycia w celu utrzymania stałego kosztu, takiego jak liczba węzłów. Aby ręcznie skalować, należy zdefiniować liczbę replik lub węzłów. Następnie interfejs API Kubernetes planuje utworzenie dodatkowych zasobników lub opróżnianie węzłów na podstawie tej repliki lub liczby węzłów.

Podczas skalowania węzłów w dół interfejs API platformy Kubernetes wywołuje odpowiedni interfejs API usługi Azure Compute powiązany z typem obliczeniowym używanym przez klaster. Na przykład w przypadku klastrów opartych na Virtual Machine Scale Sets logika wybierania węzłów do usunięcia jest określana przez interfejs API Virtual Machine Scale Sets. Aby dowiedzieć się więcej na temat sposobu wybierania węzłów do usuwania w dół, zobacz często zadawane pytania dotyczące Virtual Machine Scale Sets.

Aby rozpocząć ręczne skalowanie zasobników i węzłów, zobacz Skalowanie aplikacji w usłudze AKS.

Narzędzie do automatycznego skalowania zasobników w poziomie

Platforma Kubernetes używa narzędzia do automatycznego skalowania zasobników w poziomie (HPA), aby monitorować zapotrzebowanie na zasoby i automatycznie skalować liczbę zasobników. Domyślnie narzędzie HPA sprawdza interfejs API metryk co 15 sekund pod kątem wszelkich wymaganych zmian w liczbie replik, a interfejs API metryk pobiera dane z rozwiązania Kubelet co 60 sekund. W związku z tym usługa HPA jest aktualizowana co 60 sekund. Gdy wymagane są zmiany, liczba replik jest zwiększana lub zmniejszana odpowiednio. Usługa HPA współpracuje z klastrami AKS, które wdrożyły serwer metryk dla platformy Kubernetes w wersji 1.8 lub nowszej.

Skalowanie automatyczne zasobników w poziomie kubernetes

Podczas konfigurowania usługi HPA dla danego wdrożenia należy zdefiniować minimalną i maksymalną liczbę replik, które można uruchomić. Definiujesz również metryki do monitorowania i opierać wszelkie decyzje dotyczące skalowania, takie jak użycie procesora CPU.

Aby rozpocząć korzystanie z narzędzia do automatycznego skalowania zasobników poziomych w usłudze AKS, zobacz Autoskaluj zasobniki w usłudze AKS.

Ochłodzenie zdarzeń skalowania

Ponieważ usługa HPA jest skutecznie aktualizowana co 60 sekund, poprzednie zdarzenia skalowania mogą nie zostać pomyślnie ukończone przed wykonaniem innego sprawdzenia. Takie zachowanie może spowodować zmianę liczby replik, zanim poprzednie zdarzenie skalowania może odbierać obciążenie aplikacji i odpowiednio dostosować zapotrzebowanie na zasoby.

Aby zminimalizować zdarzenia wyścigu, ustawiono wartość opóźnienia. Ta wartość określa, jak długo hpA musi czekać po zdarzeniu skalowania przed wyzwoleniem innego zdarzenia skalowania. To zachowanie umożliwia zastosowanie nowej liczby replik, a interfejs API metryk odzwierciedla obciążenie rozproszone. Nie ma jednak opóźnienia dla zdarzeń skalowanych w górę od platformy Kubernetes 1.12, jednak domyślne opóźnienie zdarzeń skalowania w dół wynosi 5 minut.

Narzędzie do automatycznego skalowania klastra

Aby reagować na zmieniające się zapotrzebowanie na zasobniki, narzędzie do automatycznego skalowania klastra Kubernetes dostosowuje liczbę węzłów na podstawie żądanych zasobów obliczeniowych w puli węzłów. Domyślnie narzędzie do automatycznego skalowania klastra sprawdza serwer interfejsu API metryk co 10 sekund pod kątem wszelkich wymaganych zmian w liczbie węzłów. Jeśli funkcja automatycznego skalowania klastra ustali, że wymagana jest zmiana, liczba węzłów w klastrze usługi AKS zostanie zwiększona lub odpowiednio zmniejszona. Narzędzie do automatycznego skalowania klastra współpracuje z klastrami AKS z obsługą kontroli dostępu opartej na rolach Platformy Kubernetes w wersji 1.10.x lub nowszej.

Skalowanie automatyczne klastra Kubernetes

Narzędzie do automatycznego skalowania klastra jest zwykle używane obok narzędzia do automatycznego skalowania zasobników poziomych. W połączeniu narzędzie do automatycznego skalowania zasobników w poziomie zwiększa lub zmniejsza liczbę zasobników na podstawie zapotrzebowania na aplikację, a narzędzie do automatycznego skalowania klastra dostosowuje liczbę węzłów do uruchamiania dodatkowych zasobników.

Aby rozpocząć pracę z funkcją automatycznego skalowania klastra w usłudze AKS, zobacz Autoscaler klastra w usłudze AKS.

Skalowanie zdarzeń w poziomie

Jeśli węzeł nie ma wystarczających zasobów obliczeniowych do uruchomienia żądanego zasobnika, zasobnik nie może przejść przez proces planowania. Zasobnik nie może się uruchomić, chyba że dodatkowe zasoby obliczeniowe są dostępne w puli węzłów.

Gdy narzędzie do automatycznego skalowania klastra zauważy zasobniki, których nie można zaplanować z powodu ograniczeń zasobów puli węzłów, liczba węzłów w puli węzłów jest zwiększana w celu zapewnienia dodatkowych zasobów obliczeniowych. Gdy te dodatkowe węzły zostaną pomyślnie wdrożone i będą dostępne do użycia w puli węzłów, zasobniki będą następnie uruchamiane na nich.

Jeśli aplikacja musi szybko skalować, niektóre zasobniki mogą pozostać w stanie oczekiwania na zaplanowanie do momentu wdrożenia dodatkowych węzłów przez narzędzie do automatycznego skalowania klastra może zaakceptować zaplanowane zasobniki. W przypadku aplikacji, które mają duże zapotrzebowanie na serię, można skalować za pomocą węzłów wirtualnych i Azure Container Instances.

Skalowanie w zdarzeniach

Narzędzie do automatycznego skalowania klastra monitoruje również stan planowania zasobników dla węzłów, które nie otrzymały ostatnio nowych żądań planowania. Ten scenariusz wskazuje, że pula węzłów ma więcej zasobów obliczeniowych niż wymagane, a liczba węzłów można zmniejszyć. Domyślnie węzły, które przechodzą próg, nie są już potrzebne przez 10 minut, są zaplanowane do usunięcia. W takiej sytuacji zasobniki mają być uruchamiane w innych węzłach w puli węzłów, a narzędzie do automatycznego skalowania klastra zmniejsza liczbę węzłów.

Aplikacje mogą napotkać pewne zakłócenia, ponieważ zasobniki są zaplanowane w różnych węzłach, gdy narzędzie do automatycznego skalowania klastra zmniejsza liczbę węzłów. Aby zminimalizować zakłócenia, unikaj aplikacji korzystających z pojedynczego wystąpienia zasobnika.

Wzrost do Azure Container Instances (ACI)

Aby szybko skalować klaster usługi AKS, można zintegrować z usługą Azure Container Instances (ACI). Platforma Kubernetes ma wbudowane składniki do skalowania liczby replik i węzłów. Jeśli jednak aplikacja musi szybko skalować, narzędzie do automatycznego skalowania zasobników w poziomie może zaplanować więcej zasobników niż można udostępnić przez istniejące zasoby obliczeniowe w puli węzłów. W przypadku skonfigurowania tego scenariusza wyzwala narzędzie do automatycznego skalowania klastra w celu wdrożenia dodatkowych węzłów w puli węzłów może potrwać kilka minut, ale pomyślne aprowizowanie tych węzłów może potrwać kilka minut i umożliwić harmonogramowi Kubernetes uruchamianie zasobników na nich.

Skalowanie zwiększania skali na platformie Kubernetes do usługi ACI

Usługa ACI umożliwia szybkie wdrażanie wystąpień kontenerów bez dodatkowych obciążeń związanych z infrastrukturą. Po nawiązaniu połączenia z usługą AKS usługa ACI staje się zabezpieczonym, logicznym rozszerzeniem klastra usługi AKS. Składnik węzłów wirtualnych oparty na wirtualnym rozwiązaniu Kubelet jest instalowany w klastrze usługi AKS, który przedstawia usługę ACI jako wirtualny węzeł Kubernetes. Platforma Kubernetes może następnie zaplanować zasobniki uruchamiane jako wystąpienia usługi ACI za pośrednictwem węzłów wirtualnych, a nie jako zasobniki na węzłach maszyn wirtualnych bezpośrednio w klastrze usługi AKS.

Aplikacja nie wymaga żadnych modyfikacji w celu korzystania z węzłów wirtualnych. Wdrożenia mogą być skalowane w usługach AKS i ACI i bez opóźnień, ponieważ narzędzie do automatycznego skalowania klastra wdraża nowe węzły w klastrze usługi AKS.

Węzły wirtualne są wdrażane w dodatkowej podsieci w tej samej sieci wirtualnej co klaster usługi AKS. Ta konfiguracja sieci wirtualnej zabezpiecza ruch między usługą ACI i usługą AKS. Podobnie jak w przypadku klastra usługi AKS, wystąpienie usługi ACI to bezpieczny, logiczny zasób obliczeniowy odizolowany od innych użytkowników.

Następne kroki

Aby rozpocząć skalowanie aplikacji, postępuj zgodnie z przewodnikiem Szybki start, aby utworzyć klaster usługi AKS przy użyciu interfejsu wiersza polecenia platformy Azure. Następnie możesz uruchomić ręcznie lub automatycznie skalować aplikacje w klastrach usługi AKS przy użyciu następujących zasobów:

Aby uzyskać więcej informacji na temat podstawowych pojęć związanych z platformą Kubernetes i usługą AKS, zobacz następujące artykuły: