Notatka
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.
Aby nadążyć za wymaganiami aplikacji w AKS, może być konieczne dostosowanie liczby węzłów obsługujących obciążenia robocze. Składnik automatycznego skalowania klastra monitoruje pody 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ż niedostatecznie wykorzystywane węzły i usuwa je, gdy zadania można bezpiecznie przenieść oraz gdy spełnione są warunki zmniejszenia skali.
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.
Włączanie lub wyłączanie narzędzia do automatycznego skalowania klastra w klastrze
Ważne
Narzędzie do automatycznego skalowania klastra jest składnikiem Kubernetes. Mimo że klaster usługi AKS używa usługi Virtual Machine Scale Sets dla swoich 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łącz automatyczne skalowanie klastra w nowym klastrze
Utwórz grupę zasobów przy użyciu
az group createpolecenia .az group create --name myResourceGroup --location eastusUtwórz klaster AKS za pomocą polecenia
az aks createoraz włącz i skonfiguruj autoskalowanie klastra w puli węzłów klastra za pomocą parametru--enable-cluster-autoscaler, określając wartości--min-counti--max-countdla liczby węzłów. 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-keysUtworzenie 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. Poniższe przykładowe polecenie aktualizuje istniejący klaster AKS, aby włączyć automatyczne skalowanie klastra w puli węzłów klastra oraz ustawić minimalną liczbę węzłów na jeden, a maksymalną na trzy:
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 mechanizmu horyzontalnego autoskalowania podów, będzie on nadal działał przy wyłączonej funkcji automatycznego skalowania klastra, ale może się okazać, że podów nie da się przydzielić do węzłów, jeśli wszystkie zasoby węzłów są już wykorzystane.
Ponowne włączanie automatycznego skalowania klastra w klastrze
Możesz ponownie włączyć automatyczne skalowanie klastra w istniejącym klastrze za pomocą polecenia az aks update, określając parametry --enable-cluster-autoscaler, --min-count i --max-count.
Włącz lub wyłącz automatyczne skalowanie klastra w pulach węzłów
Używanie 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 dla istniejącej puli węzłów za pomocą polecenia az aks nodepool update.
az aks nodepool update \
--resource-group myResourceGroup \
--cluster-name myAKSCluster \
--name nodepool1 \
--update-cluster-autoscaler \
--min-count 1 \
--max-count 5
Wyłącz automatyczne skalowanie klastra w puli węzłów
Wyłącz automatyczne skalowanie klastra dla puli węzłów za pomocą polecenia az aks nodepool update i parametru --disable-cluster-autoscaler.
az aks nodepool update \
--resource-group myResourceGroup \
--cluster-name myAKSCluster \
--name nodepool1 \
--disable-cluster-autoscaler
Włącz ponownie autoskalowanie klastra w puli węzłów
Możesz ponownie włączyć autoskalowanie klastra dla puli węzłów za pomocą polecenia az aks nodepool update i podając parametry --enable-cluster-autoscaler, --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.
Zaktualizuj ustawienia automatycznego skalowania 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.
Użyj profilu autoskalatora 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 operacja skalowania w dół następuje, gdy węzły są niedostatecznie obciążone przez 10 minut. Jeśli masz obciążenia robocze uruchamiane co 15 minut, możesz zmienić profil autoskalera, aby zmniejszać liczbę niedostatecznie wykorzystywanych węzłów 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 autoskalera 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 |
Po jakim czasie od skalowania w górę wznawiana jest ocena skalowania w dół. | 10 min |
scale-down-delay-after-delete |
Jak długo po usunięciu węzła ponownie rozpoczyna się ocena skalowania w dół. | scan-interval |
scale-down-delay-after-failure |
Po jakim czasie od niepowodzenia skalowania w dół ponownie rozpoczyna się ocena skalowania w dół. | Trzy minuty |
scale-down-unneeded-time |
Jak długo węzeł powinien pozostawać niepotrzebny, zanim będzie można zmniejszyć liczbę węzłów. | 10 min |
scale-down-unready-time |
Jak długo węzeł niegotowy powinien pozostawać niepotrzebny, zanim będzie kwalifikował się do zmniejszenia skali. | 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 |
Maksymalna wartość pomiędzy sumą żądań CPU a sumą żądań pamięci wszystkich zasobników uruchomionych na węźle, podzielona przez odpowiedni alokowalny zasób węzła, poniżej której można rozważyć zmniejszenie skali węzła. | 0,5 |
max-graceful-termination-sec |
Maksymalna liczba sekund, przez które autoskalator klastra czeka na zakończenie działania poda podczas próby zmniejszenia skali węzła. | 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żywanego podczas skalowania w górę. Możliwe wartości to most-pods, , randomleast-wastei priority. |
random |
skip-nodes-with-local-storage |
Jeśli true, narzędzie do automatycznego skalowania klastra nie usuwa węzłów z zasobnikami korzystającymi z pamięci lokalnej, na przykład EmptyDir lub HostPath. |
false |
skip-nodes-with-system-pods |
Jeśli true, narzędzie do automatycznego skalowania klastra nie usuwa węzłów z podami z kube-system (z wyjątkiem podów DaemonSet lub podów lustrzanych). |
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 scenariuszach takich jak skalowanie wsadowe lub skokowe, gdy nie chcesz, aby Cluster Autoscaler (CA) zareagował, zanim harmonogram Kubernetes będzie mógł zaplanować wszystkie pody, możesz skonfigurować CA tak, aby ignorował niezaplanowane pody, dopóki nie osiągną określonego wieku. | 0 sekund |
max-total-unready-percentage |
Maksymalny procent niegotowych 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 minut |
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, daemonset-eviction-for-empty-nodes i daemonset-eviction-for-occupied-nodes mają status ogólnej dostępności od wersji interfejsu API 2024-05-01.
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 parametru cluster-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 parametru cluster-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 dla agresywnego skalowania w dół
Uwaga
Agresywne skalowanie w dół nie jest zalecane w przypadku klastrów, w których w krótkich odstępach czasu często dochodzi do skalowania w górę i w dół, ponieważ w takich sytuacjach może to prowadzić do wydłużenia czasu aprowizacji węzłów. Zwiększenie scale-down-delay-after-add może pomóc w takich sytuacjach, ponieważ pozwala utrzymać węzeł dłużej, aby obsługiwał napływające obciążenia.
Następujące polecenie konfiguruje agresywny profil skalowania w dół. Skanuje klaster co 30 sekund, wznawia ocenę skalowania w dół natychmiast po dodaniu węzła oraz minutę po awarii, sprawia, że niepotrzebne i niegotowe węzły kwalifikują się do skalowania w dół po trzech minutach, ogranicza łagodne zakończenie do 30 sekund, zezwala na jednoczesne usunięcie maksymalnie 1000 pustych węzłów oraz zwiększa limity dla niegotowych węzłów do 100 procent lub 1000 węzłów. Ponadto wyraźnie pozostawia domyślne działanie polegające na niepomijaniu węzłów z pamięcią lokalną oraz oczekiwaniu do 15 minut na udostępnienie węzła.
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
Skonfiguruj profil automatycznego skalowania klastra na potrzeby obciążeń skokowych
Następujące polecenie konfiguruje profil dla obciążeń skokowych. Skanuje klaster co 20 sekund, wstrzymuje ocenę skalowania w dół na 10 minut po dodaniu węzła, aby zachować zasoby na potrzeby nadchodzących nagłych skoków obciążenia, wznawia ocenę po minucie od awarii, sprawia, że niepotrzebne i niegotowe węzły kwalifikują się do skalowania w dół po pięciu minutach, ogranicza łagodne zamykanie do 30 sekund, pozwala na jednoczesne usunięcie maksymalnie 100 pustych węzłów i podnosi limity dla niegotowych węzłów do 100 procent lub 1 000 węzłów. Ponadto wyraźnie pozostawia domyślne zachowanie polegające na niepomijaniu węzłów z pamięcią lokalną oraz na oczekiwaniu do 15 minut na udostępnienie węzła.
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 automatycznego skalowania klastra za pomocą polecenia az aks update.
az aks update \
--resource-group myResourceGroup \
--name myAKSCluster \
--cluster-autoscaler-profile ""
Użyj ProvisioningRequest z autoskalerem klastra
ProvisioningRequest to zasób niestandardowy, którego można użyć do żądania zasobów dla grupy powiązanych zasobników. Narzędzie do automatycznego skalowania klastra traktuje te zasobniki jako pojedynczą jednostkę. Na podstawie podanej klasy aprowizacji narzędzie do automatycznego skalowania klastra może zarezerwować istniejące zasoby dla zasobników lub zwiększyć skalę klastra.
Uwaga
-
ProvisioningRequestObsługa wymaga klastra usługi AKS z uruchomioną platformą Kubernetes w wersji 1.33 lub nowszej. - Rozważ użycie agresywnego profilu szybkiego skalowania w dół podczas korzystania z
ProvisioningRequest, aby nieużywane węzły z częściowych lub niezrealizowanych operacji skalowania w górę były szybko usuwane.
| Klasa udostępniania | opis |
|---|---|
check-capacity.autoscaling.x-k8s.io |
Sprawdza, czy klaster ma wystarczającą ilość zasobów dla określonych zasobników. Jeśli zasoby są dostępne, autoskalator klastra rezerwuje je dla ProvisioningRequest na 10 minut, aby uniemożliwić innym ProvisioningRequests zarezerwowanie tych samych zasobów. |
best-effort-atomic-scale-up.autoscaling.x-k8s.io |
Mechanizm automatycznego skalowania klastra dokłada wszelkich starań, aby w ramach jednej operacji zwiększenia skali przydzielić całość żądanych zasobów. Jeśli nie może udostępnić wszystkich wymaganych zasobów, operacja ProvisioningRequest kończy się niepowodzeniem, a narzędzie do automatycznego skalowania klastra ponawia próbę po okresie wstrzymania. |
Aby zapoznać się z kompleksowym przykładem, który pokazuje integrację usługi Kueue z autoskalatorem klastra i ProvisioningRequest, zobacz Konfigurowanie usługi Kueue za pomocą autoskalatora klastra w usłudze AKS.
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. Aby zbierać dzienniki płaszczyzny sterowania, utwórz ustawienie diagnostyczne usługi Azure Monitor dla klastra AKS w witrynie Azure Portal lub użyj polecenia az monitor diagnostic-settings create i włącz kategorię dzienników cluster-autoscaler.
Skonfiguruj regułę dla dzienników zasobów, aby przesyłać dzienniki autoskalatora klastra do usługi Log Analytics zgodnie z instrukcjami Konfigurowanie zbierania dzienników zasobów dla płaszczyzny sterowania usługi AKS. Upewnij się, że zaznaczysz pole wyboru
cluster-autoscalerprzy wybieraniu opcji dla Logów.Wybierz sekcję Dzienniki w klastrze.
Jeśli ustawienia diagnostyczne używają trybu diagnostyki Azure, wprowadź następujące zapytanie w Log Analytics:
AzureDiagnostics | where Category == "cluster-autoscaler"Jeśli ustawienia diagnostyczne używają trybu specyficznego dla zasobu, wprowadź następujące zapytanie:
AKSControlPlane | 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=NotTriggerScaleUpWyświetlanie zdarzeń ostrzegawczych automatycznego skalowania klastra w interfejsie wiersza polecenia.
kubectl get events --field-selector source=cluster-autoscaler,type=WarningFunkcja automatycznego skalowania klastra zapisuje również stan kondycji na
configmapnazwiecluster-autoscaler-status. Ten stan można pobrać przy użyciu następującegokubectlpolecenia: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 automatycznego skalowania klastra
Metryki płaszczyzny sterowania (wersja zapoznawcza) można używać z usługą zarządzaną Azure Monitor dla rozwiązania Prometheus w celu zbierania metryk automatycznego skalowania klastra. Element docelowy controlplane-cluster-autoscaler do scrapowania jest domyślnie wyłączony, więc musisz go włączyć, aby zbierać te metryki.
Dostępne metryki to cluster_autoscaler_unschedulable_pods_count i cluster_autoscaler_unneeded_nodes_count, które pokazują liczbę zasobników, których nie można przydzielić, oraz węzłów oznaczonych jako kandydaci do usunięcia. Możesz również monitorować, czy klaster można bezpiecznie automatycznie skalować za pomocą polecenia cluster_autoscaler_cluster_safe_to_autoscale, oraz czy skalowanie w dół jest objęte okresem wstrzymania za pomocą polecenia cluster_autoscaler_scale_down_in_cooldown.
Treści powiązane
W tym artykule pokazano, jak automatycznie skalować liczbę węzłów usługi AKS. Możesz również użyć mechanizmu automatycznego skalowania zasobników w poziomie, aby dostosować liczbę zasobników, w których działa aplikacja. 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.