Udostępnij przez


Nie można zaktualizować klastra AKS przez błąd NodePoolMcVersionIncompatible

W tym artykule omówiono sposób rozwiązywania błędu "NodePoolMcVersionIncompatible — pula węzłów w wersji 1.x.y i płaszczyzny sterowania w wersji 1.a.b są niezgodne" występujący podczas uaktualniania puli węzłów w klastrze usługi Microsoft Azure Kubernetes Service (AKS).

Wymagania wstępne

Objawy

Podczas uaktualniania puli węzłów w klastrze usługi AKS jest wyświetlany jeden z następujących komunikatów o błędach:

BadRequest — NodePoolMcVersionIncompatible

Błąd: pula węzłów w wersji 1.x.y i płaszczyzna sterowania w wersji 1.a.b są niezgodne. Wersja pomocnicza puli węzłów nie może być starsza o więcej niż 2 wersje w porównaniu do wersji płaszczyzny sterowania. Wersja mniejsza puli węzłów to x, a płaszczyzna sterowania to a. Aby uzyskać więcej informacji, zobacz https://aka.ms/version-skew-policy.

Identyfikator zasobu: /subscriptions/<subscription_id>/resourcegroups/<aks_cluster_resource_group>/providers/Microsoft.ContainerService/managedClusters/<aks_cluster_name>.

BadRequest — NodePoolMcVersionIncompatible

Błąd: pula węzłów w wersji 1.x.y i płaszczyzna sterowania w wersji 1.a.b są niezgodne. Wersja pomocnicza wersji puli węzłów x jest większa niż wersja płaszczyzny sterowania a. Aby uzyskać więcej informacji, zobacz https://aka.ms/version-skew-policy.

Identyfikator zasobu: /subscriptions/<subscription_id>/resourcegroups/<aks_cluster_resource_group>/providers/Microsoft.ContainerService/managedClusters/<aks_cluster_name>.

Przyczyna

Te problemy występują, jeśli spróbujesz uaktualnić pulę węzłów, która jest więcej niż dwie wersje za wersją płaszczyzny sterowania usługi AKS, lub jeśli spróbujesz dodać pulę węzłów, która jest w nowszej wersji niż wersja płaszczyzny sterowania.

Podczas aktualizowania puli węzłów należy spełnić następujące warunki:

  • Wersja puli węzłów nie może być większa niż <.

  • Wersja puli węzłów musi należeć do dwóch wersji pomocniczych wersji płaszczyzny sterowania.

Aby uzyskać więcej informacji, zobacz reguły walidacji AKS dotyczące procesu aktualizacji.

Rozwiązanie 1: Upewnij się, że wersja puli węzłów znajduje się w dwóch wersjach pomniejszych wersji płaszczyzny sterowania.

  1. Pobierz wersję płaszczyzny sterowania , uruchamiając polecenie az aks get-upgrades za pomocą Azure CLI.

    Oto przykład użycia polecenia . Kolumna MasterVersion danych wyjściowych zawiera wersję płaszczyzny sterowania.

    az aks get-upgrades --resource-group aksrg --name testcluster1 --output table  
    
    Name     ResourceGroup    MasterVersion    Upgrades
    -------  ---------------  ---------------  -----------------------
    default  aksrg            1.23.12          1.23.15, 1.24.6, 1.24.9
    
  2. Uaktualnij pulę węzłów, uruchamiając polecenie az aks nodepool upgrade w interfejsie wiersza polecenia platformy Azure, i podaj wersję Kubernetes nie więcej niż o dwie wersje pomocnicze różniącą się od wersji płaszczyzny sterowania.

    Jeśli na przykład wersja płaszczyzny sterowania to 1.23.12, możesz określić wersję Kubernetes jako 1.23.8 lub 1.23.12 dla puli węzłów.

    Oto przykładowe użycie polecenia:

    az aks nodepool upgrade \
        --resource-group aksrg \
        --cluster-name testcluster1 \
        --name mynodepool \
        --kubernetes-version 1.23.8 \
        --no-wait
    

Rozwiązanie 2. Upewnij się, że wersja puli węzłów nie jest większa niż wersja płaszczyzny sterowania

  1. Pobierz wersję płaszczyzny sterowania , uruchamiając polecenie az aks get-upgrades za pomocą Azure CLI.

    Oto przykład użycia polecenia . Kolumna MasterVersion danych wyjściowych zawiera wersję płaszczyzny sterowania.

    az aks get-upgrades --resource-group aksrg --name testcluster1 --output table  
    
    Name     ResourceGroup    MasterVersion    Upgrades
    -------  ---------------  ---------------  -----------------------
    default  aksrg            1.23.12          1.23.15, 1.24.6, 1.24.9
    
  2. Uaktualnij pulę węzłów uruchamiając polecenie az aks nodepool upgrade interfejsu wiersza polecenia Azure i podaj wersję platformy Kubernetes, która jest mniejsza lub równa wersji płaszczyzny sterowania.

    Oto przykładowe użycie polecenia:

    az aks nodepool upgrade \
        --resource-group aksrg \
        --cluster-name testcluster1 \
        --name mynodepool \
        --kubernetes-version 1.23.12 \
        --no-wait