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.
Strategia uaktualniania stopniowego uaktualnia węzły pojedynczo (lub kilka naraz), minimalizując zakłócenia obciążenia, zapewniając jednocześnie dostępność puli węzłów w całym procesie uaktualniania. W tym artykule wyjaśniono, jak skonfigurować uaktualnienia stopniowe dla pul węzłów usługi AKS, w tym ustawienia skoków, limit czasu opróżniania i czas moczenia.
Zanim rozpoczniesz
- Upewnij się, że płaszczyzna sterowania została już uaktualniona do docelowej wersji rozwiązania Kubernetes. Nie można zaktualizować pul węzłów do wersji wyższej niż płaszczyzna kontrolna. Aby uzyskać więcej informacji, zobacz Uaktualnianie płaszczyzny sterowania klastra AKS.
- Jeśli używasz Azure CLI, ten artykuł wymaga Azure CLI wersji 2.34.1 lub nowszej. Użyj polecenia ,
az --versionaby znaleźć wersję. Jeśli musisz zainstalować lub uaktualnić, zobacz Install Azure CLI. - Potrzebujesz uprawnienia roli RBAC
Microsoft.ContainerService/managedClusters/agentPools/writedo konfigurowania aktualizacji stopniowych dla pul węzłów usługi AKS.
Przegląd charakterystyki aktualizacji stopniowej
Podczas uaktualniania stopniowego AKS wykonuje następujące operacje dla każdego węzła w puli węzłów:
-
Dodaj węzły przeciążeniowe: Dodaj nowe węzły buforowe na podstawie ustawień maksymalnego wzrostu (
--max-surge), aby zachować pojemność podczas aktualizacji. - Wyłączanie i opróżnianie węzłów: Wyłączanie i opróżnianie węzłów starych pojedynczo w celu zminimalizowania zakłóceń w uruchomionych aplikacjach. Jeśli używasz maksymalnego przeciążenia, jednocześnie blokuje i opróżnia tyle węzłów, ile wynosi określona liczba węzłów buforowych.
- Poczekaj na czas moczenia (opcjonalnie): Przed kontynuowaniem uaktualniania poczekaj na skonfigurowany czas moczenia , aby umożliwić ustabilizowanie obciążeń na nowych węzłach.
- Reimage starych węzłów: gdy stare węzły są opróżniane, są one odtwarzane, aby otrzymać nową wersję. Przeobrażone węzły stają się węzłami buforowymi dla kolejnego zestawu węzłów, które mają zostać uaktualnione.
- Powtórz: proces jest powtarzany do momentu zaktualizowania wszystkich węzłów w puli węzłów.
- Usuń węzły przepięcia: po uaktualnieniu wszystkich węzłów pozostałe węzły buforu zostaną usunięte, zachowując rozmiar i saldo oryginalnej puli węzłów.
Konfigurowanie ustawień uaktualniania stopniowego
Dostosowywanie skoku obciążenia węzła
Ważne
- Zwiększenia węzłów wymagają limitu subskrypcyjnego dla żądanej maksymalnej liczby zwiększeń w każdej operacji uaktualniania. Na przykład klaster, który ma pięć pul węzłów, z których każda ma liczbę czterech węzłów, ma łącznie 20 węzłów. Jeśli każda pula węzłów ma maksymalną wartość skoku 50%, do ukończenia uaktualnienia jest wymagany dodatkowy przydział obliczeniowy i 10 adresów IP dla węzłów (dwa węzły × pięć pul).
- Ustawienie maksymalnego przyrostu w puli węzłów jest trwałe. Kolejne uaktualnienia platformy Kubernetes lub uaktualnienia wersji węzła używają tego ustawienia. Wartość maksymalnej przepustowości dla pul węzłów można zmienić w dowolnym momencie. W przypadku pul węzłów produkcyjnych zalecamy ustawienie maksymalnego zwiększenia na poziomie 33%.
- Jeśli używasz Azure CNI, sprawdź, czy w podsieci są dostępne adresy IP, aby spełnić wymagania dotyczące adresów IP Azure CNI.
Usługa AKS domyślnie konfiguruje uaktualnienia do przepełnienia o jeden dodatkowy węzeł. Domyślna wartość jednego w ustawieniu maksymalnego narzutu umożliwia usłudze AKS zminimalizowanie zakłóceń obciążenia przez utworzenie dodatkowego węzła przed kordonowaniem/odprowadzaniem istniejących aplikacji w celu zastąpienia węzła starszej wersji. Możesz dostosować maksymalną wartość wzrostu na pulę węzłów. Po zwiększeniu maksymalnej wartości wzrostu proces uaktualniania zostanie ukończony szybciej, ale podczas procesu uaktualniania może wystąpić więcej zakłóceń.
Na przykład wartość maksymalnego wzrostu 100% zapewnia najszybsze możliwe uaktualnienie, ale także może powodować jednoczesne rozładowanie wszystkich węzłów w puli węzłów. W środowiskach testowych warto użyć takiej wyższej wartości. W przypadku pul węzłów produkcyjnych zalecamy ustawienie maksymalnego 33%wzrostu wartości .
Usługa AKS akceptuje zarówno wartości całkowite, jak i wartość procentową dla maksymalnego wzrostu. Przykład:
| Typ wartości | Example | Description |
|---|---|---|
| Integer | 5 |
Pięć dodatkowych węzłów do zwiększenia |
| Procent | 50% |
Wartość przyrostu o połowę aktualnej liczby węzłów w puli |
Maksymalny wzrost można ustawić na liczbę całkowitą lub procentową. Wartość procentowa jest zaokrąglona do najbliższej liczby węzłów. Jeśli maksymalna wartość przyrostu jest wyższa niż wymagana liczba węzłów do uaktualnienia, używana jest liczba węzłów do uaktualnienia jako maksymalna wartość przyrostu.
Jeśli skalowanie do maksymalnej wartości nadmiarowej nie jest możliwe z powodu ograniczeń limitów przydziału lub pojemności, w przypadku pul agentów z wersją Kubernetes >= 1.35 usługa AKS automatycznie próbuje zastosować wartość nadmiarową 1 jako rozwiązanie awaryjne. Jeśli wzrost 1 zakończy się powodzeniem, uaktualnienie będzie kontynuowane z 1 węzłem wzrostu.
Ustawianie maksymalnej wartości skoku
Ustaw maksymalne wartości zwiększenia dla nowych lub istniejących pul węzłów, korzystając z polecenia az aks nodepool add lub az aks nodepool update z parametrem --max-surge. Przykład:
# Set max surge for a new node pool
az aks nodepool add \
--name <node-pool-name> \
--resource-group <resource-group-name> \
--cluster-name <cluster-name> \
--max-surge 33%
# Update max surge for an existing node pool
az aks nodepool update \
--name <node-pool-name> \
--resource-group <resource-group-name> \
--cluster-name <cluster-name> \
--max-surge 5
Dostosowywanie niedostępnych węzłów
Ważne
- Max unavailable nie tworzy węzłów zastępczych podczas procesu uaktualnienia. Zamiast tego AKS ustawia ograniczenia na n węzłów (maksymalna niedostępna wartość) jednocześnie i przenosi zasobniki do innych węzłów w puli agentów. Może to spowodować zakłócenia w pracy, jeśli nie można zaplanować podów.
- Maksymalna niedostępność zasobników może spowodować więcej awarii z powodu niespełnionych budżetów zakłóceń zasobników (PDB), ponieważ jest mniej zasobów do zaplanowania zasobników. Aby uzyskać więcej informacji, zobacz Rozwiązywanie problemów z budżetami zakłóceń zasobników.
- Nie można ustawić maksymalnej niedostępności w pulach węzłów systemowych.
Usługa AKS może również skonfigurować uaktualnienia, aby nie używać tymczasowego węzła i aktualizować węzły na miejscu. Maksymalna wartość niedostępności określa, ile węzłów z istniejącej puli można jednocześnie poddać cordonowaniu i opróżnianiu. Użycie maksymalnej niedostępności zasobów do aktualizacji w miejscu jest zalecane, gdy uzyskanie dodatkowej kwoty lub pojemności nie jest możliwe podczas zwiększenia liczby zasobów w trakcie aktualizacji.
Usługa AKS akceptuje zarówno wartości całkowite, jak i wartość procentową dla maksymalnej niedostępności. Przykład:
| Typ wartości | Example | Description |
|---|---|---|
| Integer | 5 |
Pięć węzłów jest odizolowanych od istniejących węzłów |
| Procent | 50% |
Połowa bieżącej liczby węzłów w puli będzie niedostępna |
Wartość domyślna maxUnavailable to 0. Gdy maxUnavailable ma wartość 0, AKS wymaga, aby maxSurge było większe niż 0. Aby uzyskać więcej informacji, zobacz Dokumentację interfejsu API AgentPoolUpgradeSettings.
Ustaw maksymalną niedostępną wartość
Ustaw maksymalną niedostępność dla nowych lub istniejących pul węzłów za pomocą polecenia az aks nodepool add, az aks nodepool update lub az aks nodepool upgrade z parametrem --max-unavailable. Przykład:
# Set max unavailable for a new node pool
az aks nodepool add \
--name <node-pool-name> \
--resource-group <resource-group-name> \
--cluster-name <cluster-name> \
--max-surge 0 \
--max-unavailable 5
# Update max unavailable for an existing node pool
az aks nodepool update \
--name <node-pool-name> \
--resource-group <resource-group-name> \
--cluster-name <cluster-name> \
--max-surge 0 \
--max-unavailable 5
# Set max unavailable at upgrade time
az aks nodepool upgrade \
--name <node-pool-name> \
--resource-group <resource-group-name> \
--cluster-name <cluster-name> \
--max-surge 0 \
--max-unavailable 5
Mechanizm zapasowy maxUnavailable (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:
Gdy zarówno maxSurge, jak i maxUnavailable są większe od 0, usługa AKS stosuje strategię awaryjną podczas aktualizacji:
-
Próba pełnego zwiększenia: AKS najpierw próbuje przeprowadzić zwiększenie przy użyciu skonfigurowanej wartości
maxSurge. - Powrót do wzrostu 1: jeśli pełny wzrost nie jest możliwy z powodu ograniczeń przydziału lub pojemności, usługa AKS próbuje zamiast tego uzyskać wzrost o 1 węzeł (w przypadku pul agentów w wersji >Kubernetes = 1,35).
-
Powrót do uaktualnienia w miejscu: jeśli usługa AKS nie może uzyskać węzła nadmiarowego, przechodzi na uaktualnienie w miejscu przy użyciu
maxUnavailable, wyłączając planowanie na istniejących węzłach i opróżniając je bez dodawania nowych.
Takie podejście rezerwowe zapewnia, że uaktualnienia mogą być kontynuowane nawet wtedy, gdy pojemność jest ograniczona, jednocześnie preferując mniej destrukcyjne podejście oparte na wzrostach, gdy zasoby są dostępne.
Rozszerzenie Azure CLI aks-preview jest wymagane, aby używać mechanizmu awaryjnego MaxUnavailable.
maxSurge i maxUnavailable mogą być używane razem do zachowania rezerwowego lub indywidualnie.
Ustawianie wartości maksymalnej i maksymalnej niedostępności
# Configure fallback: try surge first, fall back to in-place upgrade if capacity is unavailable
az aks nodepool add \
--name <node-pool-name> \
--resource-group <resource-group-name> \
--cluster-name <cluster-name> \
--max-surge 33% \
--max-unavailable 3
# Update an existing node pool with fallback configuration
az aks nodepool update \
--name <node-pool-name> \
--resource-group <resource-group-name> \
--cluster-name <cluster-name> \
--max-surge 33% \
--max-unavailable 3
Dostosowywanie limitu czasu opróżniania węzła
Na niektórych zasobnikach mogą występować długotrwałe obciążenia, których nie można przenieść na inne węzły podczas działania. Na przykład obciążenie stanowe intensywnie korzystające z pamięci, które musi zostać zakończone. W takich przypadkach można skonfigurować czas przejścia węzła w stan opróżniany, który usługa AKS uwzględnia w procesie aktualizacji.
Domyślna wartość limitu czasu opróżniania węzła wynosi 30 minut. Wartości limitu czasu opróżniania węzła mogą wynosić co najmniej 5 minut i maksymalnie 24 godziny.
Jeśli wartość limitu czasu drenażu upłynie, a pody będą nadal uruchomione, operacja uaktualniania zostanie zatrzymana. Każda kolejna PUT operacja wznawia zatrzymane uaktualnianie.
Wskazówka
W przypadku długotrwałych zasobników należy również skonfigurować element terminationGracePeriodSeconds w specyfikacji zasobnika.
Ustawianie wartości limitu czasu opróżniania węzła
Ustaw limit czasu opróżniania węzłów (w minutach) dla nowych lub istniejących pul węzłów przy użyciu polecenia az aks nodepool add lub az aks nodepool update z parametrem --drain-timeout.
# Set drain timeout for a new node pool
az aks nodepool add \
--name <node-pool-name> \
--resource-group <resource-group-name> \
--cluster-name <cluster-name> \
--drain-timeout 100
# Update drain timeout for an existing node pool
az aks nodepool update \
--name <node-pool-name> \
--resource-group <resource-group-name> \
--cluster-name <cluster-name> \
--drain-timeout 45
Dostosowywanie czasu moczenia węzła
Aby włączyć okres oczekiwania przez określony czas między opróżnianiem węzła a przywracaniem jego obrazu i przejściem do kolejnego węzła, możesz ustawić czas odczekania. Ten czas moczenia daje możliwość wykonywania innych zadań podczas procesu uaktualniania, takich jak sprawdzanie kondycji aplikacji z poziomu pulpitu nawigacyjnego monitorowania.
Domyślny czas moczenia węzła wynosi 0 minut. Wartości czasu moczenia węzła mogą wynosić co najmniej 0 minut i maksymalnie 30 minut. Zalecamy utrzymanie możliwie krótkiego czasu moczenia. Wyższy czas moczenia węzła zwiększa całkowity czas trwania uaktualnienia i opóźni odnajdywanie problemów.
Ustawianie wartości czasu moczenia węzła
Ustaw czas nasączania węzła (w minutach) dla nowych lub istniejących pul węzłów, używając polecenia az aks nodepool add, az aks nodepool update lub az aks nodepool upgrade z flagą --node-soak-duration.
# Set node soak time for a new node pool
az aks nodepool add \
--name <node-pool-name> \
--resource-group <resource-group-name> \
--cluster-name <cluster-name> \
--node-soak-duration 10
# Update node soak time for an existing node pool
az aks nodepool update \
--name <node-pool-name> \
--resource-group <resource-group-name> \
--cluster-name <cluster-name> \
--max-surge 33% \
--node-soak-duration 5
# Set node soak time when upgrading an existing node pool
az aks nodepool upgrade \
--name <node-pool-name> \
--resource-group <resource-group-name> \
--cluster-name <cluster-name> \
--max-surge 33% \
--node-soak-duration 20
Wyświetl zdarzenia aktualizacji węzła AKS
Wyświetl zdarzenia związane z uaktualnianiem za pomocą polecenia kubectl get events, aby monitorować postęp uaktualniania stopniowego.
kubectl get events --field-selector reason=Drain,reason=Surge,reason=Upgrade
Przykładowe dane wyjściowe podczas zdarzenia uaktualniania:
default 2m1s Normal Drain node/aks-nodepool1-12345678-vmss000001 Draining node: [aks-nodepool1-12345678-vmss000001]
default 9m22s Normal Surge node/aks-nodepool1-12345678-vmss000002 Created a surge node [aks-nodepool1-12345678-vmss000002 nodepool1] for agentpool nodepool1
default 1m45s Normal Upgrade node/aks-nodepool1-12345678-vmss000001 Soak duration 5m0s after draining node: aks-nodepool1-12345678-vmss000001
Dla obciążeń produkcyjnych zalecane ustawienia aktualizacji puli węzłów usługi AKS
Poniższa tabela przedstawia zalecane parametry aktualizacji puli węzłów dla obciążeń produkcyjnych.
| Setting | Rekomendacja |
|---|---|
| Maksymalne przepięcie | Ustaw wartość 33% dla pul węzłów produkcyjnych |
| Limit czasu opróżniania | Konfiguruj na podstawie wymagań najdłużej działającego podu |
| Czas moczenia | Użyj krótkiego czasu trwania (0–5 minut), chyba że potrzebujesz ręcznej weryfikacji |
| Budżety na zakłócenia | Konfiguracja PDB dla krytycznych obciążeń w celu kontrolowania ewikcji zasobników |
| Kolejność uaktualniania | Najpierw uaktualnij pule węzłów nieprodukcyjnych, aby zweryfikować nową wersję |