Uwaga
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.
Część cyklu życia klastra usługi AKS obejmuje okresowe uaktualnianie do najnowszej wersji rozwiązania Kubernetes. Ważne jest zastosowanie najnowszych wersji zabezpieczeń i uaktualnień, aby uzyskać najnowsze funkcje. W tym artykule pokazano, jak sprawdzić i zastosować uaktualnienia do klastra usługi AKS.
Uaktualnienia wersji platformy Kubernetes
Ważne
Podczas uaktualniania obsługiwanego klastra usługi AKS nie można pominąć wersji pomocniczych platformy Kubernetes. Wszystkie uaktualnienia należy wykonać sekwencyjnie według pomocniczego numeru wersji. Na przykład uaktualnienia między 1.14.x ->1.15.x lub 1.15.x ->1.16.x są dozwolone. 1.14.x ->1.16.x nie jest dozwolony. Można pominąć tylko wiele wersji podczas uaktualniania z nieobsługiwanej wersji z powrotem do obsługiwanej wersji. Na przykład można wykonać uaktualnienie z nieobsługiwanej wersji 1.10.x do obsługiwanej wersji 1.12.x , jeśli jest dostępna.
Po wykonaniu uaktualnienia z nieobsługiwanej wersji , która pomija co najmniej dwie wersje pomocnicze, uaktualnienie nie gwarantuje funkcjonalności i jest wykluczone z umów dotyczących poziomu usług i ograniczonej gwarancji. Jeśli twoja wersja jest nieaktualna, zalecamy ponowne utworzenie klastra.
Zanim rozpoczniesz
- Jeśli używasz interfejsu wiersza polecenia platformy Azure, ten artykuł wymaga interfejsu wiersza polecenia platformy Azure w wersji 2.34.1 lub nowszej. Uruchom polecenie
az --version
, aby dowiedzieć się, jaka wersja jest używana. Jeśli musisz zainstalować lub uaktualnić, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure. - Jeśli używasz programu Azure PowerShell, ten artykuł wymaga programu Azure PowerShell w wersji 5.9.0 lub nowszej. Uruchom polecenie
Get-InstalledModule -Name Az
, aby dowiedzieć się, jaka wersja jest używana. Jeśli musisz zainstalować lub uaktualnić, zobacz Instalowanie programu Azure PowerShell. - Wykonywanie operacji uaktualniania
Microsoft.ContainerService/managedClusters/agentPools/write
wymaga roli RBAC. Aby uzyskać więcej informacji na temat ról RBAC platformy Azure, zobacz operacje dostawcy zasobów platformy Azure. - Począwszy od wersji 1.30 kubernetes i 1.27 LTS, interfejsy API beta będą domyślnie wyłączone podczas uaktualniania do nich.
Ostrzeżenie
Uaktualnianie klastra usługi AKS wyzwala proces izolowania i opróżniania węzłów. Jeśli masz dostępny niski limit przydziału zasobów obliczeniowych, uaktualnienie może zakończyć się niepowodzeniem. Aby uzyskać więcej informacji, zobacz Zwiększanie limitów przydziału.
Sprawdzanie dostępnych uaktualnień klastra usługi AKS
Uwaga
Aby być na bieżąco z poprawkami, wydaniami i aktualizacjami usługi AKS, zobacz monitor wersji usługi AKS.
Sprawdź, które wersje platformy Kubernetes są dostępne dla klastra
az aks get-upgrades
, używając polecenia .az aks get-upgrades --resource-group myResourceGroup --name myAKSCluster --output table
Poniższe przykładowe dane wyjściowe pokazują bieżącą wersję jako 1.26.6 i wyświetla listę dostępnych wersji w obszarze
upgrades
:{ "agentPoolProfiles": null, "controlPlaneProfile": { "kubernetesVersion": "1.26.6", ... "upgrades": [ { "isPreview": null, "kubernetesVersion": "1.27.1" }, { "isPreview": null, "kubernetesVersion": "1.27.3" } ] }, ... }
Rozwiązywanie problemów z komunikatami o błędach uaktualniania klastra usługi AKS
Następujące przykładowe dane wyjściowe oznaczają, appservice-kube
że rozszerzenie nie jest zgodne z wersją interfejsu wiersza polecenia platformy Azure (wymagana jest minimalna wersja 2.34.1):
The 'appservice-kube' extension is not compatible with this version of the CLI.
You have CLI core version 2.0.81 and this extension requires a min of 2.34.1.
Table output unavailable. Use the --query option to specify an appropriate query. Use --debug for more info.
Jeśli otrzymasz te dane wyjściowe, musisz zaktualizować wersję interfejsu wiersza polecenia platformy Azure. Polecenie az upgrade
zostało dodane w wersji 2.11.0 i nie działa z wersjami wcześniejszymi niż 2.11.0. Starsze wersje można zaktualizować, ponownie zainstaluj interfejs wiersza polecenia platformy Azure zgodnie z opisem w temacie Instalowanie interfejsu wiersza polecenia platformy Azure. Jeśli interfejs wiersza polecenia platformy Azure ma wersję 2.11.0 lub nowszą, uruchom polecenie az upgrade
, aby uaktualnić interfejs wiersza polecenia platformy Azure do najnowszej wersji.
Jeśli interfejs wiersza polecenia platformy Azure zostanie zaktualizowany i otrzymasz następujące przykładowe dane wyjściowe, oznacza to, że żadne uaktualnienia nie są dostępne:
ERROR: Table output unavailable. Use the --query option to specify an appropriate query. Use --debug for more info.
Jeśli nie są dostępne żadne uaktualnienia, utwórz nowy klaster z obsługiwaną wersją platformy Kubernetes i zmigruj obciążenia z istniejącego klastra do nowego klastra. Usługa AKS nie obsługuje uaktualniania klastra do nowszej wersji rozwiązania Kubernetes, gdy az aks get-upgrades
pokazuje, że nie są dostępne żadne uaktualnienia.
Uaktualnianie klastra AKS
Podczas procesu uaktualniania klastra usługa AKS wykonuje następujące operacje:
- Dodaj nowy węzeł buforu (lub tyle węzłów, ile skonfigurowano w maksymalnym wzroście) do klastra uruchamiającego określoną wersję Kubernetes.
- Odizolować oraz opróżnij jeden ze starych węzłów, aby zminimalizować zakłócenia działań aplikacji. Jeśli używasz maksymalnej fali, izoluje i opróżnia tyle węzłów w tym samym czasie, ile wynosi liczba określona dla węzłów buforu.
- W przypadku zasobników o długim czasie działania można skonfigurować limit czasu odłączenia węzła, co pozwala na niestandardowy czas oczekiwania na eksmisję zasobników oraz ich bezpieczne zakończenie na węzłach. Jeśli nie zostanie określony, wartość domyślna to 30 minut. Minimalna dozwolona wartość limitu czasu wynosi 5 minut. Maksymalny limit limitu czasu opróżniania wynosi 24 godziny.
- Gdy stary węzeł zostanie w pełni opróżniony, zostanie ponownie wyświetlony obraz, aby otrzymać nową wersję i staje się węzłem buforu dla następującego węzła, który ma zostać uaktualniony.
- Opcjonalnie możesz ustawić czas oczekiwania między opróżnianiem węzła i przejściem do obrazu i przejściem do następnego węzła. Krótki interwał umożliwia wykonywanie innych zadań, takich jak sprawdzanie kondycji aplikacji z pulpitu nawigacyjnego narzędzia Grafana podczas procesu uaktualniania. Zalecamy krótki przedział czasu dla procesu uaktualniania, tak blisko 0 minut, jak to możliwe. W przeciwnym razie czas moczenia wyższego węzła wpływa na czas, na jaki długo przed wykryciem problemu. Minimalna wartość czasu moczenia wynosi 0 minut, maksymalnie 30 minut. Jeśli nie zostanie określony, wartość domyślna to 0 minut.
- Ten proces powtarza się do momentu uaktualnienia wszystkich węzłów w klastrze.
- Na końcu procesu ostatni węzeł buforu jest usuwany, zachowując istniejącą liczbę węzłów agenta i równoważenie strefy.
Uwaga
Jeśli nie określono poprawki, klaster automatycznie uaktualnia do najnowszej ogólnie dostępnej poprawki określonej wersji pomocniczej. Na przykład ustawienie powoduje --kubernetes-version
1.28
uaktualnienie klastra do 1.28.9
.
Aby uzyskać więcej informacji, zobacz Obsługiwane uaktualnienia mniejszych wersji Kubernetes dla usługi AKS.
Uaktualnij klaster przy użyciu
az aks upgrade
polecenia .az aks upgrade \ --resource-group myResourceGroup \ --name myAKSCluster \ --kubernetes-version <KUBERNETES_VERSION>
Upewnij się, że uaktualnienie zakończyło się pomyślnie, używając
az aks show
polecenia .az aks show --resource-group myResourceGroup --name myAKSCluster --output table
Następujące przykładowe dane wyjściowe pokazują, że klaster działa teraz w wersji 1.27.3:
Name Location ResourceGroup KubernetesVersion ProvisioningState Fqdn ------------ ---------- --------------- ------------------- ------------------- ---------------------------------------------- myAKSCluster eastus myResourceGroup 1.27.3 Succeeded myakscluster-dns-379cbbb9.hcp.eastus.azmk8s.io
Ustawianie kanału automatycznego uaktualniania
Możesz ustawić kanał automatycznego uaktualniania w klastrze. Aby uzyskać więcej informacji, sprawdź Automatyczne uaktualnianie klastra AKS.
Dostosowywanie uaktualniania skoków węzłów
Ważne
Wzrosty węzłów wymagają limitu przydziału subskrypcji dla żądanej maksymalnej liczby wzrostów dla 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ść wzrostu 50%, do ukończenia uaktualnienia wymagane jest dodatkowe przydziały zasobów obliczeniowych i adresów IP 10 węzłów (2 węzły * 5 pul).
Ustawienie maksymalnego wzrostu w puli węzłów jest trwałe. Kolejne uaktualnienia platformy Kubernetes lub uaktualnienia wersji węzła będą używać tego ustawienia. Wartość maksymalnego wzrostu dla pul węzłów można zmienić w dowolnym momencie. W przypadku pul węzłów produkcyjnych zalecamy ustawienie maksymalnego wzrostu o wartości 33%.
Jeśli używasz usługi Azure CNI, sprawdź, czy w podsieci są dostępne adresy IP, aby spełnić wymagania dotyczące adresów IP usługi Azure CNI.
Usługa AKS domyślnie konfiguruje uaktualnienia w celu zwiększenia z jednym dodatkowym węzłem. Domyślna wartość jeden dla ustawień maksymalnego wzrostu umożliwia usłudze AKS zminimalizowanie zakłóceń obciążenia przez utworzenie dodatkowego węzła przed kordonem/rozładowywaniem istniejących aplikacji w celu zastąpienia starszego węzła. Możesz dostosować maksymalną wartość skoku na pulę węzłów. Po zwiększeniu maksymalnej wartości wzrostu proces uaktualniania zostanie ukończony szybciej i może wystąpić zakłócenia w procesie uaktualniania.
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 max_surge
33%
.
Usługa AKS akceptuje zarówno wartości całkowite, jak i wartość procentową dla maksymalnego wzrostu. Na przykład, wartość całkowita 5
oznacza pięć dodatkowych węzłów do zwiększenia. Wartość procentowa 50%
wskazuje na wartość wzrostu równą połowie bieżącej liczby węzłów w puli. Maksymalna wartość procentowa wzrostu może wynosić minimalnie 1%
i maksymalnie 100%
. Wartość procentowa jest zaokrąglona do najbliższej liczby węzłów. Jeśli maksymalna wartość skoku jest wyższa niż wymagana liczba węzłów do uaktualnienia, liczba węzłów do uaktualnienia jest używana dla maksymalnej wartości wzrostu. Podczas aktualizacji maksymalna wartość przeskoku może mieć minimalną wartość 0
i maksymalną wartość równą liczbie węzłów w puli węzłów. Można ustawić większe wartości, ale nie można ustawić maksymalnej liczby węzłów używanych do maksymalnego wzrostu wyższego niż liczba węzłów w puli w momencie uaktualniania.
Ustawianie maksymalnej wartości skoku
Ustaw maksymalne wartości skoków dla nowych lub istniejących pul węzłów przy użyciu
az aks nodepool add
polecenia lubaz aks nodepool update
.# Set max surge for a new node pool az aks nodepool add --name mynodepool --resource-group MyResourceGroup --cluster-name MyManagedCluster --max-surge 33% # Update max surge for an existing node pool az aks nodepool update --name mynodepool --resource-group MyResourceGroup --cluster-name MyManagedCluster --max-surge 5
Dostosowywanie niedostępnych węzłów podczas uaktualniania
Ważne
-
maxSurge
musi być ustawione na0
, aby można było ustawićmaxUnavailable
. Obie wartości nie mogą być aktywne w tym samym czasie. -
maxUnavailable
podczas procesu uaktualniania nie będą tworzone węzły przepięcia. Zamiast tego AKS odgradza nmaxUnavailable
węzłów 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. -
maxUnavailable
może spowodować więcej awarii z powodu niespełnionych PodDisruptionBudgets (PDB), ponieważ będzie mniej zasobów dostępnych do przydzielania zasobnikom. Zobacz rozwiązywanie problemów z zasobem PodDisruptionBudgets, aby uzyskać sugestie dotyczące łagodzenia problemów, jeśli występują błędy podczas korzystania z tej funkcji. - Nie można ustawić
maxUnavailable
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. Wartość maxUnavailable
może służyć do określenia, ile węzłów można odizolować i oczyścić z istniejącej puli węzłów.
Usługa AKS akceptuje zarówno wartości całkowite, jak i wartość procentową dla elementu maxUnavailable
. Na przykład, wartość całkowita 5
wskazuje, że pięć węzłów zostanie odizolowanych od istniejących węzłów w puli węzłów. Wartość procentowa 50%
oznacza wartość maxUnavailable
odpowiadającą połowie bieżącej liczby węzłów w puli.
maxUnavailable
wartości procentowe mogą być co najmniej wartością 1%
i maksymalną wartością 100%
. Wartość procentowa jest zaokrąglona do najbliższej liczby węzłów. Podczas uaktualniania, wartość maxUnavailable
może wynosić co najmniej 0
i maksymalnie tyle, ile wynosi liczba węzłów w puli węzłów.
Ustaw wartość maxUnavailable
Ustaw
maxUnvailable
wartości dla nowych lub istniejących pul węzłów za pomocą poleceniaaz aks nodepool add
lubaz aks nodepool update
.# Set maxUnavailable for a new node pool az aks nodepool add --name mynodepool --resource-group myResourceGroup --cluster-name myManagedCluster --max-surge 0 --max-unavailable 5 # Update maxUnavailable for an existing node pool az aks nodepool update --name mynodepool --resource-group myResourceGroup --cluster-name myManagedCluster --max-surge 0 --max-unavailable 5 # Set maxUnavailable at upgrade time for an existing node pool az aks nodepool upgrade --name mynodepool --resource-group myResourceGroup --cluster-name myManagedCluster --max-surge 0 --max-unavailable 5
Ustawianie wartości limitu czasu opróżniania węzła
Czasami może istnieć długotrwałe obciążenie na określonym zasobniku i nie można go ponownie planować w innym węźle w czasie wykonywania, na przykład obciążenia stanowego intensywnie korzystającego z pamięci, które musi zostać zakończone. W takich przypadkach można skonfigurować limit czasu opróżniania węzła, którego AKS będzie przestrzegać podczas procesu aktualizacji. Jeśli nie określono wartości limitu czasu opróżniania węzła, wartość domyślna to 30 minut. Minimalna dozwolona wartość limitu czasu opróżniania wynosi 5 minut, a maksymalny limit limitu czasu opróżniania wynosi 24 godziny.
Jeśli wartość limitu czasu opróżniania upłynie, a zasobniki są nadal uruchomione, operacja uaktualniania zostanie zatrzymana. Każda kolejna operacja PUT wznowi zatrzymaną modernizację. Zaleca się również, aby długo działające zasobniki skonfigurować [terminationGracePeriodSeconds
][https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/].
Ustaw limit czasu opróżniania węzła dla nowych lub istniejących pul węzłów przy użyciu
az aks nodepool add
, lubaz aks nodepool update
polecenia.# Set drain time-out for a new node pool az aks nodepool add --name mynodepool --resource-group MyResourceGroup --cluster-name MyManagedCluster --drain-time-out 100 # Update drain time-out for an existing node pool az aks nodepool update --name mynodepool --resource-group MyResourceGroup --cluster-name MyManagedCluster --drain-time-out 45
Ustawianie wartości czasu moczenia węzła
Aby umożliwić czas oczekiwania między opróżnianiem węzła i przejściem do obrazu i przejściem do następnego węzła, możesz ustawić czas moczenia na wartość z zakresu od 0 do 30 minut. Jeśli nie określono wartości czasu moczenia węzła, wartość domyślna to 0 minut.
Ustaw czas moczenia węzła dla nowych lub istniejących pul węzłów przy użyciu
az aks nodepool add
polecenia ,az aks nodepool update
lubaz aks nodepool upgrade
.# Set node soak time for a new node pool az aks nodepool add --name MyNodePool --resource-group MyResourceGroup --cluster-name MyManagedCluster --node-soak-duration 10 # Update node soak time for an existing node pool az aks nodepool update --name MyNodePool --resource-group MyResourceGroup --cluster-name MyManagedCluster --max-surge 33% --node-soak-duration 5 # Set node soak time when upgrading an existing node pool az aks nodepool upgrade --name MyNodePool --resource-group MyResourceGroup --cluster-name MyManagedCluster --max-surge 33% --node-soak-duration 20
Aktualizacja przy dużej różnicy wersji
Podczas uaktualniania z nieobsługiwanej wersji platformy Kubernetes do obsługiwanej wersji ważne jest przetestowanie obciążeń w wersji docelowej. Usługa AKS dokłada wszelkich starań, aby uaktualnić płaszczyznę sterowania i płaszczyznę danych, ale nie gwarantuje to, że obciążenia będą nadal działać. Jeśli twoje obciążenia bazują na przestarzałych interfejsach API platformy Kubernetes, platforma mogła wprowadzić istotne zmiany lub nowe zachowania (udokumentowane w informacjach o wersji usługi AKS), które należy rozwiązać.
W takich sytuacjach zalecamy przetestowanie obciążeń w nowej wersji i rozwiązanie wszelkich problemów z wersją przed przeprowadzeniem uaktualnienia klastra.
Typowym wzorcem w tej sytuacji jest przeprowadzenie niebieskiego/zielonego wdrożenia zmodyfikowanych obciążeń w nowym klastrze, który znajduje się w obsługiwanej wersji platformy Kubernetes i kierowanie żądań do nowego klastra.
Wyświetlanie zdarzeń uaktualniania
Wyświetl zdarzenia uaktualniania
kubectl get events
przy użyciu polecenia .kubectl get events
W poniższych przykładowych danych wyjściowych przedstawiono niektóre z powyższych zdarzeń wymienionych podczas uaktualniania:
... default 2m1s Normal Drain node/aks-nodepool1-96663640-vmss000001 Draining node: [aks-nodepool1-96663640-vmss000001] ... default 1m45s Normal Upgrade node/aks-nodepool1-96663640-vmss000001 Soak duration 5m0s after draining node: aks-nodepool1-96663640-vmss000001 ... default 9m22s Normal Surge node/aks-nodepool1-96663640-vmss000002 Created a surge node [aks-nodepool1-96663640-vmss000002 nodepool1] for agentpool nodepool1 ...
Następne kroki
Aby dowiedzieć się, jak skonfigurować automatyczne uaktualnienia, zobacz Konfigurowanie automatycznych uaktualnień dla klastra 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