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.
Dotyczy: ✔️ AKS Automatic AKS Standard ✔️
W tym artykule pokazano, jak Azure Kubernetes Service (AKS) może automatycznie blokować uaktualnienia klastra po wykryciu przestarzałego użycia interfejsu API platformy Kubernetes.
W przypadku większości obciążeń produkcyjnych rozwiązanie AKS Automatic jest zalecanym, domyślnym rozwiązaniem gotowym do użycia produkcyjnego w usłudze AKS. Wykrywanie zmian powodujących niekompatybilność interfejsu API Kubernetes jest wstępnie skonfigurowane zarówno w klastrach AKS Automatic, jak i AKS Standard.
Zachowanie w AKS Automatic i AKS Standard
Oba tryby klastra obejmują następujące zabezpieczenia:
- AKS Automatic: domyślnie wchodzi w skład zabezpieczeń platformy AKS Automatic gotowej do wdrożenia produkcyjnego.
- AKS Standard: Domyślnie uwzględnione w klastrach AKS Standard.
W obu trybach usługa AKS może blokować operacje uaktualniania wersji podrzędnej, gdy wykryje niedawne użycie interfejsów API, które są przestarzałe lub zostały usunięte w docelowej wersji platformy Kubernetes.
Overview
Aby pozostać w obsługiwanej wersji rozwiązania Kubernetes, należy uaktualnić klaster co najmniej raz w roku i przygotować się do ewentualnych zakłóceń. Te zakłócenia mogą obejmować niekompatybilne zmiany w interfejsie API, wycofywanie z użycia oraz zależności, takie jak Helm i interfejs pamięci masowej kontenerów (CSI). Przewidywanie tych zakłóceń i migrowanie krytycznych obciążeń bez przestojów może być trudne.
Gdy usługa AKS wykryje użycie przestarzałej wersji interfejsu API dla wersji docelowej, może automatycznie blokować operacje uaktualniania do wersji pomocniczej i powiadamiać Cię o problemie. To zachowanie pomaga uniknąć nieoczekiwanych zakłóceń i daje czas na naprawienie przestarzałego użycia interfejsu API przed kontynuowaniem uaktualniania.
Prerequisites
Upewnij się, że spełnisz następujące wymagania wstępne:
- Operacja uaktualniania to pomocnicza zmiana wersji rozwiązania Kubernetes dla płaszczyzny sterowania klastrem.
- Docelowa wersja platformy Kubernetes to 1.26 lub nowsza.
- Ostatnio widoczne użycie przestarzałych interfejsów API dla wersji docelowej miało miejsce w ciągu 12 godzin przed operacją uaktualniania. Usługa AKS rejestruje użycie co godzinę, więc użycie z ostatniej godziny może nie zostać uwzględnione przez mechanizm wykrywania.
Uwaga
Nie musisz ręcznie włączać tej funkcji wykrywania. Klastry AKS Automatic i AKS Standard konfigurują to wstępnie.
Ogranicz skutki zatrzymanych operacji aktualizacji
Jeśli spełniasz wymagania wstępne, spróbuj przeprowadzić uaktualnienie i zostanie wyświetlony błąd podobny do następującego komunikatu o błędzie:
Bad Request({
"code": "ValidationError",
"message": "Control Plane upgrade is blocked due to recent usage of a Kubernetes API deprecated in the specified version. Please refer to https://kubernetes.io/docs/reference/using-api/deprecation-guide to migrate the usage. To bypass this error, set enable-force-upgrade in upgradeSettings.overrideSettings. Bypassing this error without migrating usage will result in the deprecated Kubernetes API calls failing. Usage details: 1 error occurred:\n\t* usage has been detected on API flowcontrol.apiserver.k8s.io.prioritylevelconfigurations.v1beta1, and was recently seen at: 2023-03-23 20:57:18 +0000 UTC, which will be removed in 1.26\n\n",
"subcode": "UpgradeBlockedOnDeprecatedAPIUsage"
})
Użyj jednej z następujących opcji:
- Usuwanie użycia przestarzałych interfejsów API (zalecane)
- Pomiń walidację, aby zignorować zmiany interfejsu API.
Usuwanie użycia przestarzałych interfejsów API (zalecane)
W portalu Azure przejdź do zasobu klastra i wybierz pozycję Diagnozuj i rozwiąż problemy
Wybierz Tworzenie, aktualizowanie, usuwanie i skalowanie>wycofania interfejsu API Kubernetes.
Odczekaj 12 godzin od momentu ostatniego wykrycia użycia przestarzałego interfejsu API. Operacje tylko do odczytu nie są objęte przestarzałym użyciem interfejsu API, mianowicie Get/List/Watch. Możesz też sprawdzić wcześniejsze użycie interfejsu API, włączając Szczegółowe informacje o kontenerach i przeglądając dzienniki inspekcji kube.
Ponów próbę aktualizacji klastra.
Pomijanie walidacji w celu ignorowania zmian interfejsu API
Uwaga
Ta metoda wymaga Azure CLI w wersji 2.57 lub nowszej. Jeśli masz zainstalowane rozszerzenie interfejsu wiersza polecenia w wersji zapoznawczej, zaktualizuj go do wersji 3.0.0b10 lub nowszej. Ta metoda nie jest zalecana w przypadku normalnych operacji produkcyjnych, ponieważ przestarzałe interfejsy API w docelowej wersji rozwiązania Kubernetes mogą zakończyć się niepowodzeniem w dłuższej perspektywie. Usuń przestarzałe użycie interfejsu API tak szybko, jak to możliwe po uaktualnieniu.
Przeprowadź aktualizację z pominięciem walidacji, używając polecenia az aks upgrade z parametrem --enable-force-upgrade, i ustaw --upgrade-override-until, aby określić, kiedy kończy się okres pominięcia walidacji. Jeśli nie ustawisz wartości, okno domyślnie będzie mieć wartość trzy dni od bieżącego czasu. Podana data i godzina muszą być w przyszłości.
# Set environment variables
RESOURCE_GROUP_NAME=<your-resource-group-name>
CLUSTER_NAME=<your-cluster-name>
KUBERNETES_VERSION=<target-kubernetes-version>
# Run the upgrade command with validation bypass
az aks upgrade --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP_NAME --kubernetes-version $KUBERNETES_VERSION --enable-force-upgrade --upgrade-override-until 2023-10-01T13:00:00Z
Uwaga
Z to oznaczenie strefy dla zerowego przesunięcia względem UTC/GMT, znanego również jako czas „Zulu”. W tym przykładzie ustawiono koniec okna na 13:00:00 GMT. Aby uzyskać więcej informacji, zobacz Połączone reprezentacje daty i godziny.
Zagadnienia dotyczące środowiska produkcyjnego
W przypadku obciążeń produkcyjnych wykonaj następujące rozwiązania:
- Traktuj blokowanie uaktualnienia jako mechanizm bezpieczeństwa, a nie stan awarii.
- Preferuj migrację API zamiast wymuszonego obejścia.
- Korzystaj z okien serwisowych i kontroli przed aktualizacją.
- Monitoruj na bieżąco korzystanie z przestarzałych interfejsów API, aby uniknąć blokad aktualizacji w ostatniej chwili.
Treści powiązane
W tym artykule pokazano, jak automatycznie zatrzymać uaktualnienia klastra AKS w przypadku zmian powodujących niezgodność interfejsu API. Aby dowiedzieć się więcej o dodatkowych opcjach uaktualniania klastrów usługi AKS, zobacz Opcje uaktualniania klastrów Azure Kubernetes Service (AKS).
Aby dowiedzieć się więcej o usłudze AKS Automatic, zobacz następujące artykuły: