이 문서에서는 AKS(Microsoft Azure Kubernetes Service) 클러스터에서 노드 풀을 업그레이드할 때 발생하는 "NodePoolMcVersionIncompatible - 노드 풀 버전 1.x.y 및 컨트롤 플레인 버전 1.a.b가 호환되지 않습니다." 오류를 해결하는 방법을 설명합니다.
필수 조건
증상
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 컨트롤 플레인 버전 뒤에 두 개 이상의 버전이 있는 노드 풀을 업그레이드하거나 컨트롤 플레인 버전보다 최신 버전의 노드 풀을 추가하려는 경우에 발생합니다.
노드 풀을 업그레이드할 때 다음 조건을 충족해야 합니다.
노드 풀 버전은 컨트롤 <major>.<minor>.<patch> 버전보다 클 수 없습니다.
노드 풀 버전은 컨트롤 플레인 버전의 두 부 버전 내에 있어야 합니다.
자세한 내용은 업그레이드에 대한 AKS 유효성 검사 규칙을 참조하세요.
해결 방법 1: 노드 풀 버전이 컨트롤 플레인 버전의 두 부 버전 내에 있는지 확인합니다.
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 버전을 제공합니다.
예를 들어 컨트롤 플레인 버전인
1.23.12경우 노드 풀의 Kubernetes 버전을 다음과 같이1.23.81.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 피드백 커뮤니티에 제품 피드백을 제출할 수도 있습니다.