Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Podczas uruchamiania aplikacji w usłudze Azure Kubernetes Service (AKS) może być konieczne aktywne zwiększenie lub zmniejszenie ilości zasobów obliczeniowych w klastrze. 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 dla AKS, w tym ręczne skalowanie zasobników lub węzłów, wykorzystanie narzędzia do automatycznego skalowania zasobników w poziomie, użycie narzędzia do automatycznego skalowania klastra oraz integrowanie 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, takich jak liczba węzłów, w celu utrzymania stałego kosztu. 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 usługi Azure Compute 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 AKS. Aby ręcznie skalować liczbę zasobników, zobacz kubectl scale polecenie.
Narzędzie do automatycznego skalowania zasobników w poziomie
Platforma Kubernetes używa poziomego autoskalera zasobników (HPA) do monitorowania zapotrzebowania na zasoby i automatycznego skalowania liczby zasobników. Domyślnie HPA sprawdza interfejs API metryk co 15 sekund pod kątem wszelkich wymaganych zmian w liczbie replik, a interfejs API metryk pobiera dane z Kubelet co 60 sekund. W rezultacie narzędzie HPA jest aktualizowane co 60 sekund. Jeśli zmiany są wymagane, liczba replik jest odpowiednio skalowana. Usługa HPA współpracuje z klastrami AKS, które wdrożyły serwer metryk dla platformy Kubernetes w wersji 1.8 lub nowszej.
Podczas konfigurowania narzędzia HPA dla danego wdrożenia należy zdefiniować minimalną i maksymalną liczbę replik, które mogą być uruchamiane. Określasz również metrykę do monitorowania i decydowania o skalowaniu w oparciu o nią, takie 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 mogłoby 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, zanim zostanie wyzwolone kolejne zdarzenie skalowania. Takie zachowanie umożliwia wprowadzenie nowej liczby replik, a API metryk odzwierciedla rozłożone obciążenie. Nie ma opóźnień w przypadku wydarzeń skalowania w górę od wersji Kubernetes 1.12. Jednak domyślne opóźnienie zdarzeń skalowania w dół wynosi 5 minut.
Automatyczny skalownik klastra
Aby reagować na zmieniające się wymagania dotyczące podów, autoskaler 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 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. Autoskalowanie klastra współpracuje z klastrami AKS z włączoną kontrolą dostępu RBAC Kubernetes, które działają na wersji 1.10.x lub nowszej.
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).
Poziome skalowanie zdarzeń
Jeśli węzeł nie ma wystarczających zasobów obliczeniowych do uruchomienia żądanego zasobnika, zasobnik nie może przejść przez proces planowania. Pod nie może zostać uruchomiony, chyba że więcej zasobów obliczeniowych zostanie udostępnionych 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 tych węzłach.
Jeśli Twoja aplikacja musi szybko się skalować, niektóre pody mogą pozostać w stanie oczekiwania na zaplanowanie, dopóki więcej węzłów wdrożonych przez mechanizm automatycznego skalowania klastra nie będzie mogło zaakceptować zaplanowanych podów. 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 wydarzeń
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 stają się niepotrzebne po przekroczeniu progu 10 minut, są zaplanowane do usunięcia. Gdy wystąpi ta sytuacja, zasobniki zostają zaplanowane do uruchomienia na 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 podu.
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ą nagłe wzrosty ruchu lub obsługują duże ilości danych. KEDA różni się od Horizontal Pod Autoscaler, ponieważ 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 CPU i pamięci.
Aby rozpocząć pracę z dodatkiem KEDA w AKS, zobacz Omówienie KEDA.
Automatyczne prowizjonowanie węzłów
Automatyczne aprowizowanie węzłów (wersja zapoznawcza) (NAP) korzysta z projektu open source Karpenter, który automatycznie wdraża, konfiguruje i zarządza Karpenter w twoim klastrze usługi AKS. NAP dynamicznie provisionuje węzły na podstawie oczekujących wymagań dotyczących zasobów poda; automatycznie wybierze optymalny typ SKU maszyny wirtualnej i ilość, aby zaspokoić zapotrzebowanie w czasie rzeczywistym.
NAP przyjmuje wstępnie zdefiniowaną listę SKU maszyn wirtualnych jako punkt początkowy, aby zdecydować, które SKU najbardziej odpowiada zaplanowanym obciążeniom. Aby uzyskać dokładniejszą kontrolę, użytkownicy mogą zdefiniować górne limity zasobów używanych przez pulę węzłów i preferencje dotyczące tego, gdzie obciążenia powinny być zaplanowane, jeśli istnieje wiele pul węzłów.
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 się szybko skalować, narzędzie do automatycznego skalowania zasobników w poziomie może zaplanować więcej zasobników, niż mogą obsłużyć istniejące zasoby obliczeniowe w puli węzłów. W przypadku skonfigurowania tego scenariusza wyzwoliłoby narzędzie do automatycznego skalowania klastra, aby wdrożyć więcej węzłów do puli, ale pomyślne przygotowanie tych węzłów i umożliwienie harmonogramowi Kubernetes uruchamiania zasobników na nich może potrwać kilka minut.
Usługa ACI umożliwia szybkie wdrażanie wystąpień kontenerów bez dodatkowych obciążeń infrastruktury. 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 Kubelet, jest instalowany w klastrze AKS, prezentując ACI jako wirtualny węzeł Kubernetes. Kubernetes może następnie zaplanować zasobniki uruchamiane jako wystąpienia ACI przez węzły wirtualne, a nie jako zasobniki na węzłach VM bezpośrednio w twoim klastrze 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 bez opóźnień, ponieważ narzędzie do automatycznego skalowania klastra wdraża nowe węzły w klastrze AKS.
Węzły wirtualne są wdrażane na 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 AKS, wystąpienie 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
- Użyj horyzontalnego pod-skalera
- Użyj autoskalera klastra
- Korzystanie z dodatku Kubernetes Event-driven Autoscaling (KEDA)
Aby uzyskać więcej informacji na temat podstawowych pojęć związanych z platformą Kubernetes i usługą AKS, zobacz następujące artykuły:
Azure Kubernetes Service