Używanie narzędzia do automatycznego skalowania klastra w usłudze Azure Kubernetes Service (AKS)
Aby nadążyć za wymaganiami aplikacji w usłudze AKS, może być konieczne dostosowanie liczby węzłów, które uruchamiają obciążenia. Składnik automatycznego skalowania klastra obserwuje zasobniki w klastrze, których nie można zaplanować z powodu ograniczeń zasobów. Gdy narzędzie do automatycznego skalowania klastra wykryje problemy, skaluje w górę liczbę węzłów w puli węzłów w celu spełnienia wymagań aplikacji. Regularnie sprawdza również węzły pod kątem braku uruchomionych zasobników i skaluje w dół liczbę węzłów zgodnie z potrzebami.
W tym artykule pokazano, jak włączyć narzędzie do automatycznego skalowania klastra i zarządzać nim w usłudze AKS, która jest oparta na wersji rozwiązania Kubernetes typu open source.
Zanim rozpoczniesz
Ten artykuł wymaga interfejsu wiersza polecenia platformy Azure w wersji 2.0.76 lub nowszej. Uruchom polecenie az --version
, aby dowiedzieć się, jaka wersja jest używana. Jeśli konieczna będzie instalacja lub uaktualnienie, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.
Używanie narzędzia do automatycznego skalowania klastra w klastrze usługi AKS
Ważne
Narzędzie do automatycznego skalowania klastra jest składnikiem Kubernetes. Mimo że klaster usługi AKS używa zestawu skalowania maszyn wirtualnych dla węzłów, nie należy ręcznie włączać ani edytować ustawień automatycznego skalowania zestawu skalowania. Pozwól klastrowi Kubernetes automatycznie zarządzać wymaganymi ustawieniami skalowania. Aby uzyskać więcej informacji, zobacz Czy mogę zmodyfikować zasoby usługi AKS w grupie zasobów węzła?
Włączanie skalowania automatycznego klastra w nowym klastrze
Utwórz grupę zasobów przy użyciu
az group create
polecenia .az group create --name myResourceGroup --location eastus
Utwórz klaster usługi AKS przy użyciu
az aks create
polecenia i włącz i skonfiguruj narzędzie do automatycznego skalowania klastra w puli węzłów dla klastra przy użyciu parametru--enable-cluster-autoscaler
i określenia węzła--min-count
i--max-count
. Następujące przykładowe polecenie tworzy klaster z jednym węzłem wspieranym przez zestaw skalowania maszyn wirtualnych, włącza narzędzie do automatycznego skalowania klastra, ustawia co najmniej jeden i maksymalnie trzy węzły:az aks create \ --resource-group myResourceGroup \ --name myAKSCluster \ --node-count 1 \ --vm-set-type VirtualMachineScaleSets \ --load-balancer-sku standard \ --enable-cluster-autoscaler \ --min-count 1 \ --max-count 3 \ --generate-ssh-keys
Utworzenie klastra i skonfigurowanie ustawień automatycznego skalowania klastra trwa kilka minut.
Włączanie automatycznego skalowania klastra w istniejącym klastrze
Zaktualizuj istniejący klaster przy użyciu
az aks update
polecenia i włącz i skonfiguruj narzędzie do automatycznego skalowania klastra w puli węzłów przy użyciu parametru--enable-cluster-autoscaler
i określenia węzła--min-count
i--max-count
. Następujące przykładowe polecenie aktualizuje istniejący klaster usługi AKS, aby włączyć narzędzie do automatycznego skalowania klastra w puli węzłów dla klastra i ustawia co najmniej jeden i maksymalnie trzy węzły:az aks update \ --resource-group myResourceGroup \ --name myAKSCluster \ --enable-cluster-autoscaler \ --min-count 1 \ --max-count 3
Zaktualizowanie klastra i skonfigurowanie ustawień automatycznego skalowania klastra zajmuje kilka minut.
Wyłączanie narzędzia do automatycznego skalowania klastra w klastrze
Wyłącz funkcję automatycznego skalowania klastra przy użyciu
az aks update
polecenia i parametru--disable-cluster-autoscaler
.az aks update \ --resource-group myResourceGroup \ --name myAKSCluster \ --disable-cluster-autoscaler
Węzły nie są usuwane, gdy funkcja automatycznego skalowania klastra jest wyłączona.
Uwaga
Klaster można skalować ręcznie po wyłączeniu narzędzia do automatycznego skalowania klastra az aks scale
przy użyciu polecenia . Jeśli używasz narzędzia do automatycznego skalowania zasobników w poziomie, będzie nadal działać z wyłączonym funkcją automatycznego skalowania klastra, ale zasobniki mogą nie być zaplanowane, jeśli są używane wszystkie zasoby węzłów.
Ponowne włączanie automatycznego skalowania klastra w klastrze
Możesz ponownie włączyć funkcję automatycznego skalowania klastra w istniejącym klastrze przy użyciu az aks update
polecenia i określić --enable-cluster-autoscaler
parametry , --min-count
i --max-count
.
Używanie narzędzia do automatycznego skalowania klastra w pulach węzłów
Używanie narzędzia do automatycznego skalowania klastra w wielu pulach węzłów
Możesz użyć narzędzia do automatycznego skalowania klastra z wieloma pulami węzłów i włączyć skalowanie automatyczne klastra w każdej puli węzłów i przekazać do nich unikatowe reguły skalowania automatycznego.
Zaktualizuj ustawienia w istniejącej puli węzłów przy użyciu
az aks nodepool update
polecenia .az aks nodepool update \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name nodepool1 \ --update-cluster-autoscaler \ --min-count 1 \ --max-count 5
Wyłączanie narzędzia do automatycznego skalowania klastra w puli węzłów
Wyłącz narzędzie do automatycznego skalowania klastra w puli węzłów przy użyciu
az aks nodepool update
polecenia i parametru--disable-cluster-autoscaler
.az aks nodepool update \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name nodepool1 \ --disable-cluster-autoscaler
Ponowne włączanie skalowania automatycznego klastra w puli węzłów
Narzędzie do automatycznego skalowania klastra można ponownie włączyć w puli węzłów przy użyciu az aks nodepool update
polecenia i określić --enable-cluster-autoscaler
parametry , --min-count
i --max-count
.
Uwaga
Jeśli planujesz korzystanie z narzędzia do automatycznego skalowania klastra z pulami węzłów, które obejmują wiele stref i korzystasz z funkcji planowania związanych ze strefami, takimi jak planowanie topologiczne woluminów, zalecamy posiadanie jednej puli węzłów na strefę i włączenie --balance-similar-node-groups
za pośrednictwem profilu narzędzia do skalowania automatycznego. Dzięki temu narzędzie do automatycznego skalowania może pomyślnie skalować w górę i zachować zrównoważony rozmiar pul węzłów.
Aktualizowanie ustawień skalowania automatycznego klastra
W miarę zmiany wymagań aplikacji może być konieczne dostosowanie liczby węzłów automatycznego skalowania klastra w celu wydajnego skalowania.
Zmień liczbę węzłów przy użyciu
az aks update
polecenia i zaktualizuj narzędzie do automatycznego skalowania klastra przy użyciu parametru--update-cluster-autoscaler
i określ zaktualizowany węzeł--min-count
i--max-count
.az aks update \ --resource-group myResourceGroup \ --name myAKSCluster \ --update-cluster-autoscaler \ --min-count 1 \ --max-count 5
Uwaga
Funkcja automatycznego skalowania klastra wymusza minimalną liczbę przypadków, w których rzeczywista liczba spadnie poniżej minimum z powodu czynników zewnętrznych, takich jak podczas eksmisji typu spot lub podczas zmiany wartości minimalnej liczby z interfejsu API usługi AKS.
Korzystanie z profilu narzędzia do automatycznego skalowania klastra
Bardziej szczegółowe informacje o autoskalatorze klastra można skonfigurować, zmieniając wartości domyślne w profilu automatycznego skalowania w całym klastrze. Na przykład zdarzenie skalowania w dół występuje po niewystarczającym użyciu węzłów po 10 minutach. Jeśli masz obciążenia uruchamiane co 15 minut, możesz zmienić profil skalowania automatycznego, aby skalować w dół w dół węzły po 15 lub 20 minutach. Po włączeniu automatycznego skalowania klastra zostanie użyty domyślny profil, chyba że określisz inne ustawienia.
Ważne
Profil narzędzia do automatycznego skalowania klastra ma wpływ na wszystkie pule węzłów korzystające z narzędzia do automatycznego skalowania klastra. Nie można ustawić profilu skalowania automatycznego dla puli węzłów. Po ustawieniu profilu wszystkie istniejące pule węzłów z włączonym funkcją automatycznego skalowania klastra natychmiast zaczynają korzystać z profilu.
Ustawienia profilu skalowania automatycznego klastra
W poniższej tabeli wymieniono dostępne ustawienia profilu skalowania automatycznego klastra:
Ustawienie | opis | Domyślna wartość |
---|---|---|
scan-interval |
Częstotliwość ponownego oceny klastra na potrzeby skalowania w górę lub w dół. | 10 sekund |
scale-down-delay-after-add |
Jak długo po skalowaniu w górę wznawia się ocena skalowania w dół. | 10 min |
scale-down-delay-after-delete |
Jak długo po usunięciu węzła, które są wznawiane skalowanie w dół oceny. | scan-interval |
scale-down-delay-after-failure |
Jak długo po awarii skalowania w dół wznawiana jest ocena skalowania w dół. | Trzy minuty |
scale-down-unneeded-time |
Jak długo węzeł powinien być niepotrzebny, zanim kwalifikuje się do skalowania w dół. | 10 min |
scale-down-unready-time |
Jak długo nieczytelny węzeł powinien być niepotrzebny, zanim kwalifikuje się do skalowania w dół. | 20 minut |
ignore-daemonsets-utilization |
Czy zasobniki daemonSet zostaną zignorowane podczas obliczania wykorzystania zasobów na potrzeby skalowania w dół. | false |
daemonset-eviction-for-empty-nodes |
Czy zasobniki DaemonSet będą bezpiecznie przerywane z pustych węzłów. | false |
daemonset-eviction-for-occupied-nodes |
Czy zasobniki DaemonSet będą bezpiecznie przerywane z węzłów niepustych. | true |
scale-down-utilization-threshold |
Poziom wykorzystania węzła zdefiniowany jako suma żądanych zasobów podzielonych przez pojemność, w której węzeł można rozważyć pod kątem skalowania w dół. | 0.5 |
max-graceful-termination-sec |
Maksymalna liczba sekund, przez które narzędzie do automatycznego skalowania klastra czeka na zakończenie działania zasobnika podczas próby skalowania węzła w dół. | 600 sekund |
balance-similar-node-groups |
Wykrywa podobne pule węzłów i równoważy liczbę węzłów między nimi. | false |
expander |
Typ ekspandera puli węzłów używa w górę. Możliwe wartości to most-pods , , least-waste random i priority . |
random |
skip-nodes-with-local-storage |
Jeśli true narzędzie do automatycznego skalowania klastra nie usuwa węzłów z zasobnikami z magazynem lokalnym, na przykład EmptyDir lub HostPath. |
false |
skip-nodes-with-system-pods |
Jeśli true program , narzędzie do automatycznego skalowania klastra nie usuwa węzłów z zasobników z rozwiązania kube-system (z wyjątkiem zestawu DaemonSet lub zasobników dublowania). |
true |
max-empty-bulk-delete |
Maksymalna liczba pustych węzłów, które można usunąć w tym samym czasie. | 10 węzłów |
new-pod-scale-up-delay |
W przypadku scenariuszy, takich jak skalowanie wsadowe/wybuchowe, w których nie chcesz, aby urząd certyfikacji działał przed zaplanowaniem harmonogramu platformy Kubernetes, możesz poinformować urząd certyfikacji, aby zignorował nieplanowane zasobniki, zanim osiągną określony wiek. | 0 sekund |
max-total-unready-percentage |
Maksymalna wartość procentowa nieprzeczytanych węzłów w klastrze. Po przekroczeniu tej wartości procentowej urząd certyfikacji zatrzymuje operacje. | 45% |
max-node-provision-time |
Maksymalny czas oczekiwania autoskalatora na aprowizowanie węzła. | 15 min |
ok-total-unready-count |
Liczba dozwolonych nieprzeczytanych węzłów niezależnie od maksymalnej liczby nieprzeczytanych wartości procentowych. | Trzy węzły |
Uwaga
Parametry ignore-daemonsets-utilization, demononset-eviction-for-empty-nodes i daemonset-eviction-for-occupied-nodes są ogólnie dostępne z interfejsu API w wersji 2024-05-01. Jeśli używasz interfejsu wiersza polecenia do aktualizowania tych flag, upewnij się, że używasz wersji 2.63 lub nowszej.
Ustawianie profilu automatycznego skalowania klastra w nowym klastrze
Utwórz klaster usługi AKS przy użyciu
az aks create
polecenia i ustaw profil narzędzia do automatycznego skalowania klastra przy użyciu parametrucluster-autoscaler-profile
.az aks create \ --resource-group myResourceGroup \ --name myAKSCluster \ --node-count 1 \ --enable-cluster-autoscaler \ --min-count 1 \ --max-count 3 \ --cluster-autoscaler-profile scan-interval=30s \ --generate-ssh-keys
Ustawianie profilu automatycznego skalowania klastra w istniejącym klastrze
Ustaw funkcję automatycznego skalowania klastra w istniejącym klastrze przy użyciu
az aks update
polecenia i parametrucluster-autoscaler-profile
. Poniższy przykład konfiguruje ustawienie interwału skanowania jako 30s:az aks update \ --resource-group myResourceGroup \ --name myAKSCluster \ --cluster-autoscaler-profile scan-interval=30s
Konfigurowanie profilu automatycznego skalowania klastra pod kątem agresywnego skalowania w dół
Uwaga
Skalowanie w dół agresywnie nie jest zalecane w przypadku klastrów, w których występują częste skalowanie w poziomie i skalowanie w krótkich odstępach czasu, ponieważ może to spowodować wydłużenie czasu aprowizacji węzłów w tych okolicznościach. Zwiększenie scale-down-delay-after-add
może pomóc w tych okolicznościach dzięki dłuższemu przechowywaniu węzła w celu obsługi obciążeń przychodzących.
az aks update \
--resource-group myResourceGroup \
--name myAKSCluster \
--cluster-autoscaler-profile scan-interval=30s,scale-down-delay-after-add=0m,scale-down-delay-after-failure=1m,scale-down-unneeded-time=3m,scale-down-unready-time=3m,max-graceful-termination-sec=30,skip-nodes-with-local-storage=false,max-empty-bulk-delete=1000,max-total-unready-percentage=100,ok-total-unready-count=1000,max-node-provision-time=15m
Konfigurowanie profilu automatycznego skalowania klastra na potrzeby obciążeń z serii serii
az aks update \
--resource-group "myResourceGroup" \
--name myAKSCluster \
--cluster-autoscaler-profile scan-interval=20s,scale-down-delay-after-add=10m,scale-down-delay-after-failure=1m,scale-down-unneeded-time=5m,scale-down-unready-time=5m,max-graceful-termination-sec=30,skip-nodes-with-local-storage=false,max-empty-bulk-delete=100,max-total-unready-percentage=100,ok-total-unready-count=1000,max-node-provision-time=15m
Resetowanie profilu automatycznego skalowania klastra do wartości domyślnych
Zresetuj profil narzędzia do automatycznego skalowania klastra
az aks update
przy użyciu polecenia .az aks update \ --resource-group myResourceGroup \ --name myAKSCluster \ --cluster-autoscaler-profile ""
Pobieranie dzienników i stanu automatycznego skalowania klastra
Możesz pobrać dzienniki i aktualizacje stanu z narzędzia do automatycznego skalowania klastra, aby ułatwić diagnozowanie i debugowanie zdarzeń automatycznego skalowania. Usługa AKS zarządza narzędziem do automatycznego skalowania klastra w Twoim imieniu i uruchamia go na zarządzanej płaszczyźnie sterowania. Możesz włączyć węzeł płaszczyzny sterowania, aby wyświetlić dzienniki i operacje z narzędzia do automatycznego skalowania klastra.
Skonfiguruj regułę dla dzienników zasobów, aby wypychać dzienniki automatycznego skalowania klastra do usługi Log Analytics, korzystając z instrukcji podanych tutaj. Upewnij się, że pole wyboru jest zaznaczone
cluster-autoscaler
podczas wybierania opcji dzienników.Wybierz sekcję Dziennik w klastrze.
Wprowadź następujące przykładowe zapytanie w usłudze Log Analytics:
AzureDiagnostics | where Category == "cluster-autoscaler"
Wyświetl zdarzenia skalowania automatycznego klastra w górę, które nie zostały wyzwolone w interfejsie wiersza polecenia.
kubectl get events --field-selector source=cluster-autoscaler,reason=NotTriggerScaleUp
Wyświetlanie zdarzeń ostrzegawczych automatycznego skalowania klastra w interfejsie wiersza polecenia.
kubectl get events --field-selector source=cluster-autoscaler,type=Warning
Funkcja automatycznego skalowania klastra zapisuje również stan kondycji na
configmap
nazwiecluster-autoscaler-status
. Te dzienniki można pobrać przy użyciu następującegokubectl
polecenia:kubectl get configmap -n kube-system cluster-autoscaler-status -o yaml
Aby uzyskać więcej informacji, zobacz Często zadawane pytania dotyczące projektu Kubernetes/autoscaler w usłudze GitHub.
Metryki skalowania automatycznego klastra
Możesz włączyć metryki płaszczyzny sterowania (wersja zapoznawcza), aby wyświetlić dzienniki i operacje z narzędzia do automatycznego skalowania klastra za pomocą usługi zarządzanej Azure Monitor dla dodatku Prometheus
Następne kroki
W tym artykule pokazano, jak automatycznie skalować liczbę węzłów usługi AKS. Możesz również użyć narzędzia do automatycznego skalowania zasobników w poziomie, aby automatycznie dostosować liczbę zasobników, które uruchamiają aplikację. Aby uzyskać instrukcje dotyczące korzystania z narzędzia do automatycznego skalowania zasobników poziomych, zobacz Skalowanie aplikacji w usłudze AKS.
Aby dodatkowo zwiększyć wykorzystanie zasobów klastra i zwolnić procesor i pamięć dla innych zasobników, zobacz Pionowy moduł skalowania zasobników.
Azure Kubernetes Service