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.
Możesz zmienić rozmiar maszyn wirtualnych, aby uwzględnić rosnącą liczbę wdrożeń lub uruchomić większe obciążenie. Zmiana rozmiaru wystąpień usługi AKS bezpośrednio nie jest obsługiwana w przypadku korzystania z zestawów skalowania maszyn wirtualnych w usłudze AKS, jak opisano w zasadach pomocy technicznej dla usługi AKS:
Węzły agenta usługi AKS są wyświetlane w witrynie Azure Portal jako zwykłe zasoby IaaS platformy Azure. Jednak te maszyny wirtualne są wdrażane w niestandardowej grupie zasobów platformy Azure (zwykle poprzedzonej MC_*). Nie można wprowadzać bezpośrednich dostosowań do tych węzłów przy użyciu interfejsów API IaaS lub zasobów. Wszelkie zmiany niestandardowe, które nie są wykonywane za pośrednictwem interfejsu API usługi AKS, nie będą utrwalane za pośrednictwem uaktualnienia, skalowania, aktualizacji ani ponownego uruchamiania.
W tym artykule przedstawiono zalecaną metodę zmiany rozmiaru puli węzłów przez utworzenie nowej puli węzłów o żądanym rozmiarze jednostki SKU, kordonowaniu i opróżnieniu istniejących węzłów, a następnie usunięciu istniejącej puli węzłów.
Ważne
Ta metoda jest specyficzna dla klastrów AKS opartych na Zestawach Skalowania Maszyn Wirtualnych. W przypadku korzystania z pul węzłów opartych na maszynach wirtualnych można łatwo zaktualizować rozmiary maszyn wirtualnych w istniejącej puli węzłów przy użyciu jednego polecenia interfejsu wiersza polecenia platformy Azure i mieć wiele rozmiarów maszyn wirtualnych w tej samej puli węzłów. Aby uzyskać więcej informacji, zobacz dokumentację pul zasobów maszyn wirtualnych.
Zmiana rozmiaru puli węzłów VMSS na miejscu (wersja zapoznawcza)
Ważne
Funkcje usługi AKS w wersji zapoznawczej są dostępne na zasadzie samoobsługi i wymagają zapisania się. Wersje zapoznawcze są udostępniane w wersji "as is" i "jako dostępne" i są wykluczone z umów dotyczących poziomu usług i ograniczonej gwarancji. Wersje zapoznawcze usługi AKS są częściowo objęte pomocą techniczną dla klientów, świadczoną w miarę możliwości. W związku z tym te funkcje nie są przeznaczone do użytku produkcyjnego. Aby uzyskać więcej informacji, zobacz następujące artykuły pomocy technicznej:
Teraz możesz zmienić rozmiar maszyny wirtualnej (SKU) istniejącej puli węzłów opartej na zestawie skalowania maszyn wirtualnych (VMSS) za pomocą jednego polecenia przy użyciu az aks nodepool update --node-vm-size <new-size>. Po zainicjowaniu tej aktualizacji dostawca zasobów usługi AKS przeprowadza aktualizację stopniową w następujący sposób:
- Dynamiczne zwiększanie liczby nowych węzłów do docelowego rozmiaru maszyny wirtualnej.
- Kordonowanie i opróżnianie starych węzłów.
- Usuwanie starych węzłów.
Pozwala to uniknąć ręcznego przepływu pracy tworzenia/opróżniania/usuwania kordonu opisanego w pozostałej części tego artykułu.
Jak działa wdrażanie funkcji zmiany rozmiaru
Proces zmiany rozmiaru wykorzystuje ten sam mechanizm aktualizacji kroczącej co aktualizacja obrazu węzła i aktualizacja wersji Kubernetes, dlatego uwzględnia następujące ustawienia dotyczące aktualizacji, już skonfigurowane w puli węzłów. W szczególności zmiana rozmiaru uwzględnia następujące elementy:
-
Maksymalny wzrost (
--max-surge): określa liczbę dodatkowych węzłów z docelowym rozmiarem maszyny wirtualnej podczas wdrażania. Większa wartość zmienia rozmiar puli szybciej, ale zużywa więcej zasobów obliczeniowych i limitu przydziału adresów IP; niższa wartość jest wolniejsza, ale mniej destrukcyjna. Wartość domyślna usługi AKS to1, i33%jest zalecana w przypadku pul węzłów produkcyjnych. -
Limit czasu opróżniania węzła (
--drain-timeout): jak długo AKS czeka na eksmisję zasobnika na każdym starym węźle, zanim wymusi jego usunięcie. Wartość domyślna to 30 minut. Połącz to z odpowiednimi PodDisruptionBudgets, aby obciążenia mogły być bezpiecznie opróżniane. -
Czas stabilizacji węzła (
--node-soak-duration): jak długo usługa AKS czeka od momentu, gdy nowy węzeł stanie się gotowy, zanim przejdzie do kolejnej partii. Przydatne do umożliwienia stabilizacji obciążeń na nowym rozmiarze maszyny wirtualnej przed kontynuowaniem wdrażania.
Ponieważ zmiana rozmiaru ponownie wykorzystuje proces uaktualniania, obowiązują te same wymagania wstępne: upewnij się, że Twoja subskrypcja ma wystarczającą dostępną pojemność dla docelowego rozmiaru maszyny wirtualnej oraz dostępne adresy IP w podsieci dla węzłów nadmiarowych, a także że ustawienia PodDisruptionBudget pozwalają na usunięcie co najmniej jednej repliki naraz, w przeciwnym razie zmiana rozmiaru może zostać zablokowana podczas opróżniania węzła. Aby uzyskać kompleksowe zalecenia, zobacz Best practices for AKS node pool upgrades (Najlepsze rozwiązania dotyczące uaktualnień puli węzłów usługi AKS).
Prerequisites
- Wersja
2026-01-02-previewinterfejsu API usługi AKS lub nowsza. - Najnowsza wersja rozszerzenia Azure CLI aks-preview.
Zmienianie rozmiaru puli węzłów
Użyj polecenia az aks nodepool update z parametrem --node-vm-size, aby zmienić rozmiar maszyny wirtualnej istniejącej puli węzłów opartej na zestawie skalowania maszyn wirtualnych:
az aks nodepool update \
--resource-group MyResourceGroup \
--cluster-name MyManagedCluster \
--name nodepool1 \
--node-vm-size Standard_D4s_v3
Walidacja i nieobsługiwane kombinacje
Dostawca zasobów usługi AKS weryfikuje żądanie zmiany rozmiaru i blokuje niezgodne zmiany rozmiaru maszyny wirtualnej. Następujące zmiany są nieobsługiwane podczas zmiany rozmiaru w miejscu zestawu skalowania maszyn wirtualnych (VMSS):
- Zmiana typu kontrolera dysku (na przykład SCSI na NVMe).
- Zmiana architektury procesora CPU (na przykład x64 na ARM64).
- Zmiana ustawień obsługi poufnego przetwarzania (na przykład włączanie lub wyłączanie SNP).
- Zmiana generacji hiperwizora (na przykład z V1 na V2).
- Połączenie zmiany rozmiaru z uaktualnieniem wersji platformy Kubernetes lub zmianą liczby węzłów w tej samej operacji.
Jeśli docelowy rozmiar maszyny wirtualnej wymaga jakichkolwiek powyższych zmian, użyj ręcznego przepływu pracy cordon-and-drain opisanego w poniższych sekcjach.
Uwaga
Zmiana rozmiaru w miejscu wymaga dodatkowej nadmiarowej pojemności, aby utworzyć nowe węzły w docelowym rozmiarze maszyny wirtualnej przed opróżnieniem starych węzłów. Jeśli dla puli węzłów skonfigurowano --max-surge 0 (to znaczy, że obowiązuje ustawienie --max-unavailable), żądanie zmiany rozmiaru zostanie odrzucone, a zwrócony zostanie kod 400 Bad Request. Aby kontynuować, ustaw --max-surge na co najmniej 1 podczas zmiany rozmiaru przy użyciu
az aks nodepool update \
--resource-group MyResourceGroup \
--cluster-name MyManagedCluster \
--name nodepool1 \
--node-vm-size Standard_D4s_v3 \
--max-surge 33%
i opcjonalnie przywróć oryginalne wartości --max-surge i --max-unavailable po zakończeniu zmiany rozmiaru.
Utwórz nową pulę węzłów z wybranym SKU
Uwaga
Każdy klaster usługi AKS musi zawierać co najmniej jedną pulę węzłów systemowych z co najmniej jednym węzłem. W tym przykładzie użyjemy elementu --modeSystem do dodania puli węzłów systemowych i zastąpienia puli węzłów systemowych, którą chcemy zmienić rozmiar. Tryb puli węzłów można zaktualizować w dowolnym momencie. Możesz również dodać pulę węzłów użytkownika, ustawiając --mode na User.
Podczas skalowania upewnij się, że uwzględnisz wszystkie wymagania związane z obciążeniem, takie jak strefy dostępności, i prawidłowo skonfiguruj pulę węzłów zestawu skalowania maszyn wirtualnych. Może być konieczne zmodyfikowanie następującego polecenia, aby najlepiej dopasować je do Twoich potrzeb. Aby uzyskać pełną listę opcji konfiguracji, zobacz stronę referencyjną az aks nodepool add .
Utwórz nową pulę węzłów przy użyciu
az aks nodepool addpolecenia . W tym przykładzie utworzymy nową pulę węzłów zmynodepooltrzema węzłami iStandard_DS3_v2jednostką SKU maszyny wirtualnej, aby zastąpić istniejącą pulę węzłów ,nodepool1która maStandard_DS2_v2jednostkę SKU maszyny wirtualnej.az aks nodepool add \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name mynodepool \ --node-count 3 \ --node-vm-size Standard_DS3_v2 \ --mode System \ --no-waitUtworzenie nowej puli węzłów trwa kilka minut.
Uzyskaj stan nowej puli węzłów przy użyciu
kubectl get nodespolecenia.kubectl get nodesDane wyjściowe powinny przypominać następujący przykład, pokazując zarówno nową pulę węzłów
mynodepool, jak i istniejącą pulę węzłównodepool1.NAME STATUS ROLES AGE VERSION aks-mynodepool-98765432-vmss000000 Ready agent 23m v1.21.9 aks-mynodepool-98765432-vmss000001 Ready agent 23m v1.21.9 aks-mynodepool-98765432-vmss000002 Ready agent 23m v1.21.9 aks-nodepool1-12345678-vmss000000 Ready agent 10d v1.21.9 aks-nodepool1-12345678-vmss000001 Ready agent 10d v1.21.9 aks-nodepool1-12345678-vmss000002 Ready agent 10d v1.21.9
Odizoluj istniejące węzły
Izolowanie oznacza określone węzły jako nieplanowalne i uniemożliwia dodawanie kolejnych podów do węzłów.
Pobierz nazwy węzłów, które chcesz połączyć za pomocą
kubectl get nodespolecenia .kubectl get nodesDane wyjściowe powinny przypominać przykładowe dane wyjściowe z węzłami w istniejącej puli węzłów
nodepool1, które chcesz odizolować:NAME STATUS ROLES AGE VERSION aks-nodepool1-12345678-vmss000000 Ready agent 7d21h v1.21.9 aks-nodepool1-12345678-vmss000001 Ready agent 7d21h v1.21.9 aks-nodepool1-12345678-vmss000002 Ready agent 7d21h v1.21.9Cordon istniejące węzły przy użyciu polecenia
kubectl cordon, określając żądane węzły w postaci listy rozdzielanej spacjami. Przykład:kubectl cordon aks-nodepool1-12345678-vmss000000 aks-nodepool1-12345678-vmss000001 aks-nodepool1-12345678-vmss000002Twój wynik powinien przypominać następujący przykład wyniku, pokazujący, że węzły są odizolowane:
node/aks-nodepool1-12345678-vmss000000 cordoned node/aks-nodepool1-12345678-vmss000001 cordoned node/aks-nodepool1-12345678-vmss000002 cordoned
Opróżnianie istniejących węzłów
Ważne
Aby pomyślnie opróżnić węzły i wykluczyć uruchomione zasobniki, upewnij się, że wszystkie zasobniki PodDisruptionBudget (PDB) zezwalają na przeniesienie co najmniej jednej repliki zasobnika naraz. W przeciwnym razie operacja opróżniania/eksmisji kończy się niepowodzeniem. Aby to sprawdzić, możesz uruchomić kubectl get pdb -A polecenie i sprawdzić, czy ALLOWED DISRUPTIONS wartość jest co najmniej 1 wyższa.
Przy opróżnianiu węzłów, uruchomione na nich pody są usuwane i odtwarzane na innych węzłach dostępnych do harmonogramowania.
Opróżnij istniejące węzły za pomocą polecenia
kubectl drainz flagami--ignore-daemonsetsi--delete-emptydir-data, określając żądane węzły na liście oddzielonej spacjami. Przykład:Ważne
Użycie
--delete-emptydir-datajest wymagane, aby usunąć utworzone przez AKS zasobnikicorednsimetrics-server. Jeśli nie używasz tej flagi, zostanie wyświetlony błąd. Aby uzyskać więcej informacji, zobacz dokumentację dotyczącą emptydir.kubectl drain aks-nodepool1-12345678-vmss000000 aks-nodepool1-12345678-vmss000001 aks-nodepool1-12345678-vmss000002 --ignore-daemonsets --delete-emptydir-dataPo zakończeniu operacji opróżniania wszystkie zasobniki (z wyłączeniem zasobników kontrolowanych przez zestawy demonów) powinny być uruchomione w nowej puli węzłów. Możesz to sprawdzić za pomocą
kubectl get podspolecenia .kubectl get pods -o wide -A
Rozwiązywanie problemów z usuwaniem podów
Podczas opróżniania węzłów może wystąpić następujący błąd:
Error when evicting pods/[podname] -n [namespace] (will retry after 5s): Cannot evict pod as it would violate the pod's disruption budget.
Domyślnie klaster ma budżety zakłóceń podów zarządzane przez usługę AKS (na przykład coredns-pdb lub konnectivity-agent) z wartością MinAvailable1. Na przykład, jeśli uruchomione są dwa coredns pody, w danym momencie może być zakłócony tylko jeden z nich. Podczas gdy jeden z nich jest odtwarzany i jest niedostępny, drugi coredns pod nie może być eksmitowany z powodu budżetu zakłóceń poda. Ten problem rozwiązuje się po zaplanowaniu i uruchomieniu początkowego coredns zasobnika, co pozwala na prawidłowe usunięcie i ponowne utworzenie drugiego zasobnika.
Napiwek
Rozważ opróżnianie węzłów jeden po drugim w celu zapewnienia bezproblemowiejszego środowiska eksmisji i uniknięcia ograniczania przepustowości. Aby uzyskać więcej informacji, zobacz:
Usuwanie istniejącej puli węzłów
Ważne
Gdy usuniesz pulę węzłów, AKS nie wykonuje procedur cordon i drain. Aby zminimalizować zakłócenia ponownego uruchamiania zasobników aktualnie uruchomionych w puli węzłów, którą planujesz usunąć, przed usunięciem wykonaj kordon i opróżnij wszystkie węzły w puli węzłów.
Usuń oryginalną pulę węzłów przy użyciu polecenia
az aks nodepool delete.az aks nodepool delete \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name nodepool1Sprawdź, czy klaster usługi AKS ma tylko nową pulę węzłów z poprawnie uruchomionymi aplikacjami i zasobnikami przy użyciu polecenia
kubectl get nodes.kubectl get nodesDane wyjściowe powinny przypominać następujące przykładowe dane wyjściowe, pokazujące tylko nową pulę węzłów
mynodepool.NAME STATUS ROLES AGE VERSION aks-mynodepool-98765432-vmss000000 Ready agent 63m v1.21.9 aks-mynodepool-98765432-vmss000001 Ready agent 63m v1.21.9 aks-mynodepool-98765432-vmss000002 Ready agent 63m v1.21.9
Następne kroki
Po zmianie rozmiaru puli węzłów przez kordonowanie i opróżnianie dowiedz się więcej o używaniu wielu pul węzłów.