Konfigurowanie wielu węzłów i włączanie skalowania do zera przy użyciu usługi AKS
Usługa Azure Kubernetes Service umożliwia tworzenie różnych pul węzłów w celu dopasowania określonych obciążeń do węzłów uruchomionych w poszczególnej puli węzłów. Proces dopasowywania obciążeń do węzłów umożliwia planowanie zużycia zasobów obliczeniowych i optymalizowanie kosztów.
Rozwiązanie Twojej firmy do śledzenia dronów jest wdrażane w usłudze Azure Kubernetes Service (AKS) jako wiele konteneryzowanych aplikacji i usług. Twój zespół opracował nową usługę modelowania predykcyjnego, która umożliwia przetwarzanie informacji o ścieżce lotu w ekstremalnych warunkach pogodowych i tworzenie optymalnych tras lotów. Ta usługa wymaga obsługi maszyny wirtualnej opartej na procesorze graficznym GPU i jest uruchamiana tylko w określonych dniach w tygodniu.
Chcesz skonfigurować pulę węzłów klastra dedykowaną do przetwarzania informacji o ścieżce lotu. Proces jest uruchamiany tylko przez kilka godzin dziennie i chcesz użyć puli węzłów opartej na procesorze GPU. Jednak chcesz płacić za węzły tylko wtedy, gdy ich używasz.
Przyjrzyjmy się, w jaki sposób pule węzłów i jak usługa AKS używa węzłów, a następnie zobaczmy, jak skalować liczbę węzłów w puli węzłów.
Co to jest pula węzłów?
Pula węzłów opisuje grupę węzłów o tej samej konfiguracji w klastrze usługi AKS. Te węzły zawierają bazowe maszyny wirtualne, na których są uruchamiane aplikacje. W klastrze Kubernetes zarządzanym za pomocą usługi AKS można utworzyć dwa typy pul węzłów:
Pule węzłów systemu
Pule węzłów użytkownika
Pule węzłów systemu
Pule węzłów systemowych hostuje krytyczne zasobniki systemowe, które składają się na płaszczyznę sterowania klastra. Pula węzłów systemu umożliwia używanie tylko systemu Linux jako systemu operacyjnego węzła i obsługuje tylko obciążenia oparte na systemie Linux. Węzły w puli węzłów systemu są zarezerwowane dla obciążeń systemowych i zwykle nie są używane do uruchamiania obciążeń niestandardowych. Każdy klaster usługi AKS musi zawierać co najmniej jedną pulę węzłów systemu z co najmniej jednym węzłem i należy zdefiniować rozmiary bazowych maszyn wirtualnych dla węzłów.
Pule węzłów użytkownika
Pule węzłów użytkownika obsługują obciążenia, a jako system operacyjny węzła można określić system Windows lub Linux. Można także zdefiniować rozmiary bazowych maszyn wirtualnych dla węzłów i uruchamiać określone obciążenia. Na przykład rozwiązanie do śledzenia dronów ma usługę przetwarzania wsadowego wdrażaną w puli węzłów z konfiguracją dla maszyn wirtualnych ogólnego przeznaczenia. Nowa usługa modelowania predykcyjnego wymaga maszyn wirtualnych o większej pojemności opartych na procesorze graficznym GPU. Decydujesz się na skonfigurowanie oddzielnej puli węzłów zawierającej węzły z włączoną obsługą procesora graficznego GPU.
Liczba węzłów w puli węzłów
W puli węzłów można skonfigurować maksymalnie 100 węzłów. Jednak liczba węzłów, które należy skonfigurować, zależy od liczby zasobników uruchamianych w jednym węźle.
Na przykład w puli węzłów systemu niezbędne jest ustawienie maksymalnej liczby zasobników, które mają być uruchamiane w jednym węźle, na 30. Ta wartość gwarantuje, że wystarczająca ilość miejsca jest dostępna do uruchomienia zasobników systemowych o kluczowym znaczeniu dla kondycji klastra. Gdy liczba zasobników przekracza tę minimalną wartość, nowe węzły są wymagane w puli, aby zaplanować dodatkowe obciążenia. Dlatego pula węzłów systemu musi zawierać co najmniej jeden węzeł w puli. W przypadku środowisk produkcyjnych zalecana liczba węzłów dla puli węzłów systemu to co najmniej trzy węzły.
Pule węzłów użytkownika są przeznaczone do uruchamiania obciążeń niestandardowych i nie dotyczy ich wymaganie 30 zasobników. Pule węzłów użytkownika umożliwiają ustawienie liczby węzłów dla puli na wartość zero.
Zarządzanie zapotrzebowaniem na aplikację w klastrze usługi AKS
W usłudze AKS zwiększenie lub zmniejszenie ilości zasobów obliczeniowych w klastrze Kubernetes powoduje skalowanie. Można skalować liczbę wystąpień obciążenia, które muszą być uruchamiane, lub liczbę węzłów, na których są uruchamiane te obciążenia. Obciążenia można skalować w klastrze zarządzanym przez usługę AKS na jeden z dwóch sposobów. Pierwsze rozwiązanie polega na ręcznym skalowaniu zasobników i węzłów w zależności od potrzeb. Drugą opcją jest automatyzacja, w której można użyć narzędzia do automatycznego skalowania zasobników w poziomie w celu skalowania zasobników i narzędzia do automatycznego skalowania klastra w celu skalowania węzłów.
Jak ręcznie skalować pulę węzłów
Jeśli uruchamiasz obciążenia wykonywane przez określony czas w określonych znanych interwałach, ręczne skalowanie rozmiaru puli węzłów jest dobrym sposobem kontrolowania kosztów węzłów.
Załóżmy, że usługa modelowania predykcyjnego wymaga puli węzłów opartej na procesorze GPU i działa przez godzinę każdego dnia w południe. Pulę węzłów możesz skonfigurować przy użyciu określonych węzłów opartych na procesorach graficznych GPU i skalować tę pulę do zerowej liczby węzłów, gdy klaster nie jest używany.
Oto przykład polecenia az aks node pool add
, którego można użyć do utworzenia puli węzłów. Zwróć uwagę na użycie parametru --node-vm-size
w celu określenia Standard_NC6
rozmiaru maszyny wirtualnej opartej na procesorze graficznym GPU dla węzłów w puli.
az aks nodepool add \
--resource-group resourceGroup \
--cluster-name aksCluster \
--name gpunodepool \
--node-count 1 \
--node-vm-size Standard_NC6 \
--no-wait
Gdy pula będzie gotowa, możesz użyć polecenia az aks nodepool scale
, aby skalować pulę węzłów do zerowej liczby węzłów. Zwróć uwagę na parametr --node-count
, który ma wartość zero. Oto przykład polecenia:
az aks nodepool scale \
--resource-group resourceGroup \
--cluster-name aksCluster \
--name gpunodepool \
--node-count 0
Jak automatycznie skalować klaster
Usługa AKS umożliwia automatyczne skalowanie obciążeń przy użyciu narzędzia do automatycznego skalowania klastra Kubernetes. Klaster można skalować przy użyciu dwóch opcji:
Narzędzie do automatycznego skalowania zasobników w poziomie (horizontal pod autoscaler)
Narzędzie do automatycznego skalowania klastra (cluster autoscaler)
Przyjrzyjmy się każdej z nich, zaczynając od narzędzia do automatycznego skalowania zasobników w poziomie.
Narzędzie do automatycznego skalowania zasobników w poziomie
Narzędzie do automatycznego skalowania zasobników w poziomie platformy Kubernetes umożliwia monitorowanie zapotrzebowania na zasoby w klastrze i automatyczne skalowanie liczby replik obciążeń.
Serwer metryk platformy Kubernetes zbiera metryki pamięci i procesora z kontrolerów, węzłów i kontenerów uruchomionych w klastrze usługi AKS. Jednym ze sposobów uzyskiwania dostępu do tych informacji jest użycie interfejsu API metryk. Narzędzie do automatycznego skalowania zasobników w poziomie sprawdza interfejs API metryk co 30 sekund, aby zdecydować, czy aplikacja potrzebuje większej liczby wystąpień, aby zaspokoić wymagane zapotrzebowanie.
Załóżmy, że nasza firma również ma usługę przetwarzania wsadowego, która planuje ścieżki lotu dronów. Zauważysz, że usługa jest zatłoczona żądaniami i tworzy listę prac dostaw, powodując opóźnienia i frustracje klientów. Zwiększenie liczby replik usługi przetwarzania wsadowego może umożliwić terminowe przetwarzanie zamówień.
Aby rozwiązać ten problem, należy skonfigurować narzędzie do automatycznego skalowania zasobnika w poziomie w celu zwiększenia liczby replik usługi w razie potrzeby. Po zmniejszeniu liczby żądań wsadowych zmniejsza się liczba replik usługi.
Jednak narzędzie do automatycznego skalowania zasobników w poziomie skaluje zasobniki tylko na dostępnych węzłach w skonfigurowanych pulach węzłów klastra.
Narzędzie do automatycznego skalowania klastra
Ograniczenie zasobów jest wyzwalane, gdy narzędzie do automatycznego skalowania zasobników w poziomie nie może zaplanować innego zasobnika w istniejących węzłach w puli węzłów. Aby skalować liczbę węzłów w pulach węzłów klastra w okresach ograniczeń, należy użyć narzędzia do automatycznego skalowania klastra. Narzędzie do automatycznego skalowania klastra sprawdza zdefiniowane metryki i skaluje liczbę węzłów w górę lub w dół na podstawie wymaganych zasobów obliczeniowych.
Narzędzie do automatycznego skalowania klastra jest używane razem z narzędziem do automatycznego skalowania zasobników w poziomie.
Narzędzie do automatycznego skalowania klastra monitoruje zdarzenia skalowania w górę i skalowania w dół oraz umożliwia klastrowi Kubernetes zmianę liczby węzłów w puli węzłów, gdy zmienia się zapotrzebowanie na zasoby.
Każdą pulę węzłów można skonfigurować przy użyciu innych reguł skalowania. Na przykład możesz skonfigurować tylko jedną pulę węzłów, aby zezwolić na skalowanie automatyczne, lub skonfigurować pulę węzłów do skalowania tylko do określonej liczby węzłów.
Ważne
Po włączeniu narzędzia do automatycznego skalowania klastra w puli węzłów utracisz możliwość skalowania liczby węzłów do zera. Zamiast tego można ustawić minimalną liczbę na zero, aby zaoszczędzić na zasobach klastra.