この記事では、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 つのマイナー バージョン内にあることを確認する
Azure CLI で az aks get-upgrades コマンドを実行して、コントロール プレーンのバージョンを取得します。
コマンドの使用例を次に示します。
MasterVersion出力列には、コントロール プレーンのバージョンが含まれています。az aks get-upgrades --resource-group aksrg --name testcluster1 --output tableName ResourceGroup MasterVersion Upgrades ------- --------------- --------------- ----------------------- default aksrg 1.23.12 1.23.15, 1.24.6, 1.24.9az 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: ノード プールのバージョンがコントロール プレーンのバージョンを超えないことを確認する
Azure CLI で az aks get-upgrades コマンドを実行して、コントロール プレーンのバージョンを取得します。
コマンドの使用例を次に示します。
MasterVersion出力列には、コントロール プレーンのバージョンが含まれています。az aks get-upgrades --resource-group aksrg --name testcluster1 --output tableName ResourceGroup MasterVersion Upgrades ------- --------------- --------------- ----------------------- default aksrg 1.23.12 1.23.15, 1.24.6, 1.24.9az 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 フィードバック コミュニティに製品フィードバックを送信することもできます。