Partager via


Impossible de mettre à niveau le cluster AKS en raison de l’erreur NodePoolMcVersionIncompatible

Cet article explique comment résoudre l’erreur « NodePoolMcVersionIncompatible - Node pool version 1.x.y et plan de contrôle version 1.a.b incompatible » qui se produit lorsque vous mettez à niveau un pool de nœuds dans un cluster Microsoft Azure Kubernetes Service (AKS).

Conditions préalables

Symptômes

Lorsque vous mettez à niveau un pool de nœuds dans un cluster AKS, vous recevez l’un des messages d’erreur suivants :

BadRequest - NodePoolMcVersionIncompatible

Erreur : Le pool de nœuds version 1.x.y et le plan de contrôle version 1.a.b sont incompatibles. La version mineure du pool de nœuds ne peut pas être inférieure de plus de 2 versions par rapport à celle du plan de contrôle. La version mineure du pool de nœuds est x et le plan de contrôle est un. Pour plus d’informations, consultez https://aka.ms/version-skew-policy.

ID de ressource : /subscriptions/<subscription_id>/resourcegroups/<aks_cluster_resource_group>/providers/Microsoft.ContainerService/managedClusters/<aks_cluster_name>.

BadRequest - NodePoolMcVersionIncompatible

Erreur : Le pool de nœuds version 1.x.y et le plan de contrôle version 1.a.b sont incompatibles. La version mineure du pool de nœuds x est supérieure à la version du plan de contrôle a. Pour plus d’informations, consultez https://aka.ms/version-skew-policy.

ID de ressource : /subscriptions/<subscription_id>/resourcegroups/<aks_cluster_resource_group>/providers/Microsoft.ContainerService/managedClusters/<aks_cluster_name>.

La cause

Ces problèmes se produisent si vous essayez de mettre à niveau un pool de nœuds qui est supérieur à deux versions derrière la version du plan de contrôle AKS, ou si vous essayez d’ajouter un pool de nœuds situé à une version plus récente que la version du plan de contrôle.

Vous devez respecter les conditions suivantes lorsque vous mettez à niveau un pool de nœuds :

  • La version du pool de nœuds ne peut pas être supérieure à la principale< du contrôle>.<mineure>.<version corrective>.

  • La version du pool de nœuds doit se trouver dans deux versions mineures de la version du plan de contrôle.

Pour plus d’informations, consultez les règles de validation AKS pour la mise à niveau.

Solution 1 : Assurez-vous que la version du pool de nœuds se trouve dans un intervalle de deux versions mineures de celle du plan de contrôle.

  1. Obtenez la version du plan de contrôle en exécutant la commande az aks get-upgrades dans Azure CLI.

    Voici un exemple d’utilisation de la commande. La MasterVersion colonne de sortie contient la version du plan de contrôle.

    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. Mettez à niveau le pool de nœuds en exécutant la commande Azure CLI az aks nodepool et fournissez une version Kubernetes qui se trouve dans deux versions mineures de la version du plan de contrôle.

    Par exemple, si la version du plan de contrôle est 1.23.12, vous pouvez spécifier la version Kubernetes du pool de nœuds en tant que 1.23.8 ou 1.23.12.

    Voici un exemple d’utilisation de la commande :

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

Solution 2 : Vérifiez que la version du pool de nœuds n’est pas supérieure à la version du plan de contrôle

  1. Obtenez la version du plan de contrôle en exécutant la commande az aks get-upgrades dans Azure CLI.

    Voici un exemple d’utilisation de la commande. La MasterVersion colonne de sortie contient la version du plan de contrôle.

    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. Mettez à niveau le pool de nœuds en exécutant la commande Azure CLI az aks nodepool et fournissez une version Kubernetes inférieure ou égale à la version du plan de contrôle.

    Voici un exemple d’utilisation de la commande :

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