Opcje skalowania aplikacji w usłudze Azure Kubernetes Service

Podczas uruchamiania aplikacji w usłudze Azure Kubernetes Service (AKS) może być konieczne zwiększenie lub zmniejszenie ilości zasobów obliczeniowych. W miarę 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 innych 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 do automatycznego skalowania zasobników w poziomie, przy użyciu narzędzia do automatycznego skalowania klastra i integrowania z usługą Azure Container Instances (ACI).

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

Repliki lub zasobniki oraz węzły można ręcznie skalować, aby przetestować sposób, w jaki aplikacja reaguje na zmianę dostępnych zasobów i stanu. Ręczne skalowanie zasobów umożliwia zdefiniowanie określonej 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 platformy Kubernetes planuje utworzenie większej liczby 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 obliczeń platformy Azure powiązany z typem obliczeniowym używanym przez klaster. Na przykład w przypadku klastrów opartych na zestawach skalowania maszyn wirtualnych interfejs API zestawów skalowania maszyn wirtualnych określa węzły do usunięcia. Aby dowiedzieć się więcej na temat sposobu wybierania węzłów do usuwania w dół, zobacz Zestawy skalowania maszyn wirtualnych — często zadawane pytania.

Aby rozpocząć ręczne skalowanie węzłów, zobacz ręczne skalowanie węzłów w klastrze usługi AKS. Aby ręcznie skalować liczbę zasobników, zobacz polecenie kubectl scale.

Narzędzie do automatycznego skalowania zasobników w poziomie

Platforma Kubernetes używa narzędzia do automatycznego skalowania zasobników w poziomie (HPA) do monitorowania zapotrzebowania na zasoby i automatycznego skalowania liczby zasobników. Domyślnie narzędzie HPA sprawdza interfejs API metryk co 15 sekund pod kątem jakichkolwiek wymaganych zmian w liczbie replik, a interfejs API metryk pobiera dane z rozwiązania Kubelet co 60 sekund. Dlatego hpa jest aktualizowana co 60 sekund. Jeśli zmiany są wymagane, 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 zasobnika platformy Kubernetes

Podczas konfigurowania narzędzia HPA dla danego wdrożenia należy zdefiniować minimalną i maksymalną liczbę replik, które mogą być uruchamiane. Zdefiniuj również metryka do monitorowania i podejmowania wszelkich decyzji dotyczących skalowania, takich jak użycie procesora CPU.

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

Ochłodzenie zdarzeń skalowania

Ponieważ narzędzie HPA jest skutecznie aktualizowane co 60 sekund, poprzednie zdarzenia skalowania mogą nie zostać pomyślnie wykonane przed wykonaniem kolejnego sprawdzenia. Takie zachowanie może spowodować, że hpA zmieni liczbę replik, zanim poprzednie zdarzenie skalowania może odebrać obciążenie aplikacji i odpowiednio dostosować wymagania dotyczące zasobów.

Aby zminimalizować zdarzenia wyścigowe, 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óźnień w przypadku zdarzeń skalowanych w górę na platformie 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ę wymagania dotyczące zasobników, 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 liczby węzłów. Jeśli funkcja automatycznego skalowania klastra ustali, że wymagana jest zmiana, liczba węzłów w klastrze usługi AKS jest zwiększana lub zmniejszana odpowiednio. 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.

Narzędzie do automatycznego skalowania klastra Kubernetes

Narzędzie do automatycznego skalowania klastra jest zwykle używane wraz z narzędziem 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 większej liczby zasobników.

Aby rozpocząć pracę z funkcją automatycznego skalowania klastra w usłudze AKS, zobacz Cluster autoscaler on AKS (Skalowanie automatyczne 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 uruchomić się, chyba że więcej zasobów obliczeniowych jest dostępnych 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 węzły zostaną pomyślnie wdrożone i będą dostępne do użycia w puli węzłów, zasobniki zostaną następnie zaplanowane do uruchomienia na nich.

Jeśli aplikacja musi szybko skalować, niektóre zasobniki mogą pozostawać w stanie oczekiwania na zaplanowanie, dopóki więcej węzłów wdrożonych przez narzędzie do automatycznego skalowania klastra może zaakceptować zaplanowane zasobniki. W przypadku aplikacji, które mają duże wymagania dotyczące serii, można skalować za pomocą węzłów wirtualnych i usługi 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ż jest to 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 są zaplanowane do uruchamiania w innych węzłach w puli węzłów, a narzędzie do automatycznego skalowania klastra zmniejsza liczbę węzłów.

Aplikacje mogą powodować 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.

Skalowanie automatyczne oparte na zdarzeniach platformy Kubernetes (KEDA)

Narzędzie Kubernetes do automatycznego skalowania opartego na zdarzeniach (KEDA) to składnik typu open source do automatycznego skalowania obciążeń opartych na zdarzeniach. Skaluje obciążenia dynamicznie na podstawie liczby odebranych zdarzeń. KEDA rozszerza platformę Kubernetes przy użyciu niestandardowej definicji zasobów (CRD), określanej jako scaledObject, aby opisać sposób skalowania aplikacji w odpowiedzi na określony ruch.

Skalowanie KEDA jest przydatne w scenariuszach, w których obciążenia odbierają wzrost ruchu lub obsługują duże ilości danych. Różni się on od narzędzia Horizontal Pod Autoscaler, ponieważ funkcja KEDA jest sterowana zdarzeniami i skaluje się na podstawie liczby zdarzeń, podczas gdy hpA jest sterowana metrykami na podstawie wykorzystania zasobów (na przykład procesora CPU i pamięci).

Aby rozpocząć pracę z dodatkiem KEDA w usłudze AKS, zobacz Omówienie usługi KEDA.

Przenoszenie do usługi Azure Container Instances (ACI)

Aby szybko skalować klaster usługi AKS, możesz zintegrować go 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że być udostępniane 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 większej liczby węzłów w puli węzłów, ale może upłynąć kilka minut, zanim te węzły zostaną pomyślnie aprowidowane 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 planować zasobniki uruchamiane jako wystąpienia usługi ACI za pośrednictwem węzłów wirtualnych, a nie jako zasobniki w węzłach maszyny wirtualnej bezpośrednio w klastrze usługi AKS.

Aplikacja nie wymaga żadnych modyfikacji w celu używania 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 innej 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 klaster 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, zobacz następujące zasoby:

  • Ręczne skalowanie zasobników lub węzłów
  • Korzystanie z narzędzia do automatycznego skalowania zasobników poziomych
  • Korzystanie z narzędzia do automatycznego skalowania klastra
  • Korzystanie z dodatku [Kubernetes Event-driven Autoscaling (KEDA) [keda-addon]

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