次の方法で共有


NodePoolMcVersionIncompatible エラーが原因で AKS クラスターをアップグレードできない

この記事では、Microsoft Azure Kubernetes Service (AKS) クラスターのノード プールをアップグレードするときに発生する "NodePoolMcVersionIncompatible - Node pool version 1.x.y and control plane version 1.a.b are incompatible" エラーを解決する方法について説明します。

[前提条件]

症状

AKS クラスター内のノード プールをアップグレードすると、次のいずれかのエラー メッセージが表示されます。

BadRequest - NodePoolMcVersionIncompatible

エラー: ノード プール バージョン 1.x.y とコントロール プレーン バージョン 1.a.b に互換性がありません。 ノード プールのマイナー バージョンは、コントロール プレーンのバージョンより 2 つ未満のバージョンにすることはできません。 ノード プールのマイナー バージョンは x で、コントロール プレーンは a です。 詳細については、 https://aka.ms/version-skew-policyを確認してください。

リソース ID: /subscriptions/<subscription_id>/resourcegroups/<aks_cluster_resource_group>/providers/Microsoft.ContainerService/managedClusters/<aks_cluster_name>。

BadRequest - NodePoolMcVersionIncompatible

エラー: ノード プール バージョン 1.x.y とコントロール プレーン バージョン 1.a.b に互換性がありません。 ノード プール バージョン x のマイナー バージョンがコントロール プレーン バージョン a より大きい。 詳細については、 https://aka.ms/version-skew-policyを確認してください。

リソース ID: /subscriptions/<subscription_id>/resourcegroups/<aks_cluster_resource_group>/providers/Microsoft.ContainerService/managedClusters/<aks_cluster_name>。

原因

これらの問題は、AKS コントロール プレーン バージョンの背後にある 2 つ以上のバージョンのノード プールをアップグレードしようとした場合、またはコントロール プレーン バージョンよりも新しいバージョンのノード プールを追加しようとした場合に発生します。

ノード プールをアップグレードするときは、次の条件を満たす必要があります。

  • ノードプールのバージョンは、コントロールの<major>.<minor>.<patch>バージョンを超えることはできません。

  • ノード プールのバージョンは、コントロール プレーン バージョンの 2 つの マイナー バージョン内にある必要があります。

詳細については、 アップグレードの AKS 検証規則を参照してください。

解決策 1: ノード プールのバージョンがコントロール プレーン バージョンの 2 つのマイナー バージョン内にあることを確認する

  1. Azure CLI で az aks get-upgrades コマンドを実行して、コントロール プレーンのバージョンを取得します。

    コマンドの使用例を次に示します。 MasterVersion出力列には、コントロール プレーンのバージョンが含まれています。

    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. az aks nodepool upgrade Azure CLI コマンドを実行してノード プールをアップグレードし、コントロール プレーン バージョンの 2 つのマイナー バージョン内にある Kubernetes バージョンを提供します。

    たとえば、コントロール プレーンのバージョンが 1.23.12されている場合は、ノード プールの Kubernetes バージョンを 1.23.8 または 1.23.12として指定できます。

    コマンドの使用例を次に示します。

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

解決策 2: ノード プールのバージョンがコントロール プレーンのバージョンを超えないことを確認する

  1. Azure CLI で az aks get-upgrades コマンドを実行して、コントロール プレーンのバージョンを取得します。

    コマンドの使用例を次に示します。 MasterVersion出力列には、コントロール プレーンのバージョンが含まれています。

    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. az aks nodepool upgrade Azure CLI コマンドを実行してノード プールをアップグレードし、コントロール プレーンのバージョン以下の Kubernetes バージョンを提供します。

    コマンドの使用例を次に示します。

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

お問い合わせはこちらから

ご質問がある場合は、 Azure コミュニティサポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。