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ń skalowania automatycznego 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

  1. Utwórz grupę zasobów przy użyciu az group create polecenia .

    az group create --name myResourceGroup --location eastus
    
  2. 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
    

    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-autoscalerparametry , --min-counti --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-autoscalerparametry , --min-counti --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 (Wersja zapoznawcza) Czy zasobniki daemonSet zostaną zignorowane podczas obliczania wykorzystania zasobów na potrzeby skalowania w dół. false
daemonset-eviction-for-empty-nodes (Wersja zapoznawcza) Czy zasobniki DaemonSet będą bezpiecznie przerywane z pustych węzłów. false
daemonset-eviction-for-occupied-nodes (Wersja zapoznawcza) 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-wasterandomi priority. random
skip-nodes-with-local-storage Jeśli truenarzę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 trueprogram , 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

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
    

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 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=0s,scale-down-delay-after-failure=30s,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.

  1. 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.

  2. Wybierz sekcję Dziennik w klastrze.

  3. Wprowadź następujące przykładowe zapytanie w usłudze Log Analytics:

    AzureDiagnostics
    | where Category == "cluster-autoscaler"
    

    Jeśli istnieją dzienniki do pobrania, powinny zostać wyświetlone dzienniki podobne do następujących dzienników:

    Zrzut ekranu przedstawiający dzienniki usługi Log Analytics.

  4. Wyświetlanie niezzwolonych zdarzeń skalowania automatycznego klastra w górę w interfejsie wiersza polecenia

    kubectl get events --field-selector source=cluster-autoscaler,reason=NotTriggerScaleUp
    
  5. Wyświetlanie zdarzeń ostrzegawczych automatycznego skalowania klastra w interfejsie wiersza polecenia

    kubectl get events --field-selector source=cluster-autoscaler,type=Warning
    
  6. Funkcja automatycznego skalowania klastra zapisuje również stan kondycji na configmap nazwie cluster-autoscaler-status. Te dzienniki można pobrać przy użyciu następującego kubectl 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.