Partilhar via


Não é possível atualizar o cluster do AKS devido ao erro NodePoolMcVersionIncompatible

Este artigo discute como resolver o erro "NodePoolMcVersionIncompatible - o pool de nós versão 1.x.y e o plano de controle versão 1.a.b são incompatíveis" que ocorre quando você atualiza um pool de nós em um cluster do AKS (Serviço de Kubernetes do Microsoft Azure).

Pré-requisitos

Sintomas

Ao atualizar um pool de nós em um cluster do AKS, você recebe uma das seguintes mensagens de erro:

BadRequest – NodePoolMcVersionIncompatible

Erro: o pool de nós versão 1.x.y e o painel de controle versão 1.a.b são incompatíveis. A versão menor do pool de nós não pode estar mais de 2 versões inferior à versão do plano de controle. A versão secundária do pool de nós é x e o plano de controle é a. Para obter mais informações, verifique https://aka.ms/version-skew-policy.

ID do recurso: /subscriptions/<subscription_id>/resourcegroups/<aks_cluster_resource_group>/providers/Microsoft.ContainerService/managedClusters/<aks_cluster_name>.

BadRequest – NodePoolMcVersionIncompatible

Erro: o pool de nós versão 1.x.y e o painel de controle versão 1.a.b são incompatíveis. A versão menor do pool de nós versão x é maior que a versão do plano de controle a. Para obter mais informações, verifique https://aka.ms/version-skew-policy.

ID do recurso: /subscriptions/<subscription_id>/resourcegroups/<aks_cluster_resource_group>/providers/Microsoft.ContainerService/managedClusters/<aks_cluster_name>.

Motivo

Esses problemas ocorrerão se você tentar atualizar um pool de nós com mais de duas versões por trás da versão do painel de controle do AKS ou se você tentar adicionar um pool de nós que esteja em uma versão mais recente do que a versão do painel de controle.

Você deve cumprir com as seguintes condições ao atualizar um pool de nós:

  • A versão do pool de nós não pode ser maior que a principal< do controle>.<menor>.<versão do patch>.

  • A versão do pool de nós deve estar dentro de duas versões menores da versão do plano de controle.

Para obter mais informações, consulte as regras de validação do AKS para atualização.

Solução 1: verifique se a versão do pool de nós está dentro de duas versões secundárias da versão do painel de controle

  1. Obtenha a versão do plano de controle executando o comando az aks get-upgrades na CLI do Azure.

    Aqui está um exemplo de uso do comando. A MasterVersion coluna de saída contém a versão do plano de controle.

    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. Atualize o pool de nós executando o comando az aks nodepool upgrade da CLI do Azure e forneça uma versão do Kubernetes que esteja dentro de duas versões menores da versão do plano de controle.

    Por exemplo, se a versão do painel de controle for 1.23.12, você poderá especificar a versão do Kubernetes do pool de nós como 1.23.8 ou 1.23.12.

    Veja um exemplo de uso do comando:

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

Solução 2: verifique se a versão do pool de nós não é maior que a versão do plano de controle

  1. Obtenha a versão do plano de controle executando o comando az aks get-upgrades na CLI do Azure.

    Aqui está um exemplo de uso do comando. A MasterVersion coluna de saída contém a versão do plano de controle.

    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. Atualize o pool de nós executando o comando az aks nodepool upgrade da CLI do Azure e forneça uma versão do Kubernetes menor ou igual à versão do plano de controle.

    Veja um exemplo de uso do comando:

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