Opcje uaktualniania klastrów usługi Azure Kubernetes Service (AKS)
W tym artykule opisano różne opcje uaktualniania klastrów usługi AKS. Aby przeprowadzić podstawowe uaktualnienie wersji rozwiązania Kubernetes, zobacz Uaktualnianie klastra usługi AKS.
W przypadku klastrów usługi AKS korzystających z wielu pul węzłów lub węzłów systemu Windows Server zobacz Uaktualnianie puli węzłów w usłudze AKS. Aby uaktualnić określoną pulę węzłów bez przeprowadzania uaktualnienia klastra Kubernetes, zobacz Uaktualnianie określonej puli węzłów.
Wykonywanie uaktualnień ręcznych
Możesz wykonać ręczne uaktualnienia, aby kontrolować, kiedy klaster uaktualnia do nowej wersji platformy Kubernetes. Uaktualnienia ręczne są przydatne, gdy chcesz przetestować nową wersję rozwiązania Kubernetes przed uaktualnieniem klastra produkcyjnego. Możesz również użyć uaktualnień ręcznych, aby uaktualnić klaster do określonej wersji platformy Kubernetes, która nie jest najnowszą dostępną wersją.
Aby wykonać uaktualnienia ręczne, zobacz następujące artykuły:
- Uaktualnianie klastra usługi AKS
- Uaktualnianie obrazu węzła
- Dostosowywanie uaktualniania skoków węzłów
- Aktualizacje systemu operacyjnego węzła przetwarzania
- Uaktualnianie wielu klastrów usługi AKS za pośrednictwem usługi Azure Kubernetes Fleet Manager
Konfigurowanie automatycznych uaktualnień
Możesz skonfigurować automatyczne uaktualnienia, aby automatycznie uaktualnić klaster do najnowszej dostępnej wersji rozwiązania Kubernetes. Automatyczne uaktualnienia są przydatne, gdy chcesz mieć pewność, że klaster zawsze korzysta z najnowszej wersji rozwiązania Kubernetes. Możesz również użyć automatycznych uaktualnień, aby upewnić się, że klaster zawsze korzysta z obsługiwanej wersji rozwiązania Kubernetes.
Aby skonfigurować automatyczne uaktualnienia, zobacz następujące artykuły:
- Automatyczne uaktualnianie klastra usługi AKS
- Planowanie konserwacji i kontrolowanie uaktualnień klastra usługi AKS
- Automatyczne zatrzymywanie uaktualnień klastra usługi AKS w przypadku zmian powodujących niezgodność interfejsu API (wersja zapoznawcza)
- Automatyczne uaktualnianie obrazów systemu operacyjnego węzła klastra usługi AKS
- Automatyczne stosowanie aktualizacji zabezpieczeń do węzłów usługi AKS przy użyciu funkcji GitHub Actions
Specjalne zagadnienia dotyczące pul węzłów obejmujących wiele stref dostępności
Usługa AKS używa równoważenia strefy o najlepszym wysiłku w grupach węzłów. Podczas wzrostu uaktualniania strefy węzłów przepięcia w zestawach skalowania maszyn wirtualnych są nieznane przed upływem czasu, co może tymczasowo spowodować niezrównoważone konfigurację strefy podczas uaktualniania. Jednak usługa AKS usuwa węzły przepięcia po zakończeniu uaktualniania i zachowaniu oryginalnego salda strefy. Jeśli chcesz zachować równowagę stref podczas uaktualniania, możesz zwiększyć wzrost do wielu trzech węzłów, a zestawy skalowania maszyn wirtualnych równoważą węzły między strefami dostępności przy użyciu równoważenia strefy o najlepszym wysiłku. W przypadku równoważenia strefy najlepszego nakładu pracy zestaw skalowania próbuje skalować w poziomie i w poziomie przy zachowaniu równowagi. Jeśli jednak z jakiegoś powodu nie jest to możliwe (na przykład jeśli jedna strefa ulegnie awarii, zestaw skalowania nie może utworzyć nowej maszyny wirtualnej w tej strefie), zestaw skalowania umożliwia tymczasowe nierównowagi pomyślne skalowanie w poziomie lub w poziomie.
Trwałe oświadczenia woluminów (PVC) wspierane przez dyski magazynu lokalnie nadmiarowego platformy Azure (LRS) są powiązane z określoną strefą i mogą nie zostać odzyskane natychmiast, jeśli węzeł skokowy nie pasuje do strefy PCV. Jeśli strefy nie są zgodne, może to spowodować przestój w aplikacji, gdy operacja uaktualniania będzie nadal opróżniać węzły, ale telewizory są powiązane ze strefą. Aby obsłużyć ten przypadek i zachować wysoką dostępność, skonfiguruj budżet zakłóceń zasobników w aplikacji, aby umożliwić platformie Kubernetes przestrzeganie wymagań dotyczących dostępności podczas operacji opróżniania.
Optymalizowanie pod kątem niezrównanego zachowania węzła (wersja zapoznawcza)
Możesz skonfigurować zachowanie procesu uaktualniania pod kątem błędów opróżniania. Domyślne zachowanie uaktualniania to Schedule
, który składa się z błędu opróżniania węzła powodującego niepowodzenie operacji uaktualniania, pozostawiając węzły niezadrainowane w stanie nieumyślnym. Alternatywnie można wybrać Cordon
zachowanie, które pomija węzły, których nie można opróżnić, umieszczając je w stanie kwarantanny, oznaczając je kubernetes.azure.com/upgrade-status:Quarantined
i kontynuując uaktualnianie pozostałych węzłów. To zachowanie gwarantuje, że wszystkie węzły zostaną uaktualnione lub poddane kwarantannie. Takie podejście umożliwia rozwiązywanie problemów z awariami opróżniania i bezproblemowe zarządzanie węzłami poddanymi kwarantannie.
Jak mogę ustawić nowe zachowanie cordonu?
Użyj wersji zapoznawczej interfejsu wiersza polecenia i zainstaluj aks-preview
rozszerzenie 9.0.0b3 lub nowsze.
Aby zaktualizować lub zainstalować aks-preview
rozszerzenie, możesz użyć następujących poleceń:
az extension update --name aks-preview
az extension add --name aks-preview
Zaktualizuj zachowanie niezrównanej puli węzłów na :Cordon
az aks nodepool update --cluster-name $CLUSTER_NAME --name $NODE_POOL_NAME --resource-group $RESOURCE_GROUP --max-surge 1 --undrainable-node-behavior Cordon
Następujące przykładowe dane wyjściowe pokazują zaktualizowane zachowanie węzła, które nie jest możliwe do zniesienia:
"upgradeSettings": {
"drainTimeoutInMinutes": null,
"maxSurge": "1",
"nodeSoakDurationInMinutes": null,
"undrainableNodeBehavior": "Cordon"
}
Sprawdź etykietę na zablokowanych węzłach. W przypadku awarii węzła opróżniania podczas uaktualniania przy użyciu następującego polecenia:
kubectl get nodes --show-labels=true
Zablokowane węzły są niezaplanowane dla zasobników i oznaczone etykietą "kubernetes.azure.com/upgrade-status: Quarantined"
. Maksymalna liczba węzłów, które można zablokować, nie może być większa niż Max-Surge
wartość.
Jak mogę usunąć zablokowane węzły?
Najpierw rozwiąż problem powodujący opróżnianie. Poniższy przykład usuwa odpowiedzialny plik PDB:
kubectl delete pdb nginx-pdb
poddisruptionbudget.policy "nginx-pdb" deleted.
Następnie usuń zablokowany węzeł przy użyciu az aks nodepool delete-machines
polecenia . To polecenie jest przydatne, jeśli zamierzasz zmniejszyć ślad puli węzłów, usuwając węzły pozostawione w starszych wersjach.
az aks nodepool delete-machines --cluster-name MyCluster --machine-names aks-nodepool1-test123-vmss000000 --name nodepool1 --resource-group TestRG
Po wykonaniu tego kroku możesz uzgodnić stan klastra, wykonując dowolną operację aktualizacji bez pól opcjonalnych, jak opisano tutaj.
Przykładowe polecenie:
az aks update --resource-group TestRG --name MyCluster
Alternatywnie można skalować pulę węzłów do tej samej liczby węzłów co liczba uaktualnionych węzłów. Ta akcja gwarantuje, że pula węzłów zostanie do jej zamierzonego oryginalnego rozmiaru. Usługa AKS określa priorytety usuwania zablokowanych węzłów. To polecenie przywraca również stan aprowizacji klastra do Succeeded
. W podanym 2
przykładzie jest łączna liczba uaktualnionych węzłów.
az aks nodepool scale --resource-group TestRG --cluster-name MyCluster --name nodepool1 --node-count 2
Optymalizowanie uaktualnień w celu zwiększenia wydajności i zminimalizowania zakłóceń
Połączenie okna planowanej konserwacji, maksymalnego wzrostu, budżetu zakłóceń zasobników, limitu czasu opróżniania węzła i czasu moczenia węzła może znacznie zwiększyć prawdopodobieństwo pomyślnego ukończenia uaktualnień węzłów do końca okna obsługi, jednocześnie minimalizując zakłócenia.
- Okno planowanej konserwacji umożliwia zespołom usług zaplanowanie automatycznego uaktualniania w wstępnie zdefiniowanym oknie, zwykle w okresie niskiego ruchu, aby zminimalizować wpływ obciążenia. Zalecamy czas trwania okna co najmniej cztery godziny.
- Maksymalna liczba skoków w puli węzłów umożliwia żądanie dodatkowego limitu przydziału podczas procesu uaktualniania i ogranicza liczbę węzłów wybranych do uaktualnienia jednocześnie. Wyższy maksymalny wzrost powoduje szybszy proces uaktualniania. Nie zalecamy ustawiania jej na poziomie 100%, ponieważ uaktualnia wszystkie węzły jednocześnie, co może spowodować zakłócenia działania aplikacji. Zalecamy maksymalny limit przydziału wzrostu w wysokości 33% dla pul węzłów produkcyjnych.
- Budżet zakłóceń zasobników jest ustawiony dla aplikacji usług i ogranicza liczbę zasobników, które mogą być wyłączone podczas dobrowolnych zakłóceń, takich jak uaktualnienia węzłów kontrolowanych przez usługę AKS. Można go skonfigurować jako
minAvailable
repliki, wskazując minimalną liczbę zasobników aplikacji, które muszą być aktywne lubmaxUnavailable
repliki, wskazując maksymalną liczbę zasobników aplikacji, które można zakończyć, zapewniając wysoką dostępność aplikacji. Zapoznaj się ze wskazówkami podanymi w celu skonfigurowania budżetów zakłóceń zasobników (PDB). Wartości pdB powinny być weryfikowane w celu określenia ustawień, które działają najlepiej dla określonej usługi. - Limit czasu opróżniania węzłów w puli węzłów umożliwia skonfigurowanie czasu oczekiwania na eksmisję zasobników i bezproblemowe zakończenie na węzeł podczas uaktualniania. Ta opcja jest przydatna w przypadku obsługi długotrwałych obciążeń. Po określeniu limitu czasu opróżniania węzła (w minutach) usługa AKS uwzględnia oczekiwanie na budżety zakłóceń zasobników. Jeśli nie zostanie określony, domyślny limit czasu wynosi 30 minut.
- Czas moczenia węzła pomaga zmniejszyć liczbę uaktualnień węzłów w kontrolowany sposób i zminimalizować przestoje aplikacji podczas uaktualniania. Możesz określić czas oczekiwania, najlepiej możliwie blisko 0 minut, aby sprawdzić gotowość aplikacji między uaktualnieniami węzłów. Jeśli nie zostanie określony, wartość domyślna to 0 minut. Czas moczenia węzła działa wraz z maksymalnymi właściwościami skoku i limitu czasu opróżniania węzłów dostępnymi w puli węzłów, aby zapewnić odpowiednie wyniki pod względem szybkości uaktualniania i dostępności aplikacji.
Następne kroki
W tym artykule wymieniono różne opcje uaktualniania klastrów usługi AKS. Szczegółowe omówienie najlepszych rozwiązań dotyczących uaktualniania i innych zagadnień można znaleźć w artykule AKS patch and upgrade guidance (Wskazówki dotyczące poprawek i uaktualniania usługi AKS).
Azure Kubernetes Service