"az aks command invoke" 오류 해결
이 문서에서는 AKS(Azure Kubernetes Service) 클러스터, 특히 프라이빗 AKS 클러스터에 성공적으로 연결할 수 있도록 Microsoft Azure CLI에서 az aks 명령 호출 오류를 해결하는 방법을 설명합니다.
다음 표와 같이 다른 연결 메서드는 추가 구성 구성 요소를 사용해야 합니다.
연결 방법 | 추가 구성 구성 요소 |
---|---|
가상 네트워크 | VPN(가상 사설망) |
피어된 네트워크 | Azure ExpressRoute |
프라이빗 엔드포인트 | Jumpbox |
az aks command invoke
Azure CLI 명령은 추가 구성 구성 요소가 필요하지 않은 클러스터에 연결하는 다른 방법입니다.
명령을 실행 az aks command invoke
하면 Azure CLI는 네임스페이스에 aks-command
Pod를 자동으로 만들어 command-<ID>
AKS 클러스터에 액세스하고 필요한 정보를 검색합니다.
필수 조건
증상
다음 표에서는 일반적인 az aks command invoke
오류 메시지를 나열합니다. 각 오류 메시지에는 오류가 발생하는 이유와 해결 방법을 설명하는 섹션에 대한 링크가 있습니다.
오류 메시지 | 링크 |
---|---|
작업에서 잘못된 상태 '찾을 수 없음'을 반환했습니다. | 원인 1: 노드 또는 리소스 제약 조건으로 인해 Pod를 만들 수 없습니다. |
kubernetes 오류로 인해 관리되는 클러스터에서 명령을 실행하지 못했습니다. 세부 정보: 허용 웹후크 "validation.gatekeeper.sh"이 요청을 거부했습니다. <정책별 메시지> | 원인 2: Azure Policy에서 Pod 만들기를 허용하지 않음 |
서버 오류(사용할 수 없음): 네임스페이스는 사용할 수 없습니다. 사용자 "<ID>"는 클러스터 범위의 API 그룹 "<"에 리소스 "리소스>"를 나열할 수 없습니다. | 원인 3: 필수 역할이 부여되지 않음 |
MSI에 연결하지 못했습니다. MSI가 올바르게 구성되어 있는지 확인하세요. 토큰 요청 가져오기 반환: 응답 [400]; |
원인 4: Cloud Shell 문제가 있습니다. |
원인 1: 노드 또는 리소스 제약 조건으로 인해 Pod를 만들 수 없습니다.
Pod가 Not Found
성공적인 상태에 도달할 수 없으므로 command-<ID>
작업이 상태를 반환합니다(예: Running
.). (대부분의 경우 Pod는 상태에 유지됩니다 Pending
.) 이 경우 노드는 Pod를 예약할 수 없습니다. 이 시나리오에는 다음과 같은 다양한 원인이 있을 수 있습니다.
- 리소스 제약 조건
- 상태 또는
SchedulingDisabled
상태가 있는NotReady
노드 - Pod가 허용할 수 없는 taint가 있는 노드
- 기타 원인
솔루션 1: Pod를 예약하고 실행할 수 있도록 구성 변경
구성을 command-<ID>
조정하여 Pod를 예약하고 실행할 수 있는지 확인합니다. 예시:
- 노드 풀 크기를 늘리고 Pod를 배포할 수 있도록
command-<ID>
taints와 같은 Pod 격리 제약 조건이 없는지 확인합니다. - Pod 사양에서 리소스 요청 및 제한을 조정합니다.
원인 2: Azure Policy에서 Pod 만들기를 허용하지 않음
특정 Azure 정책이 있는 경우 Pod에서 az aks command invoke
허용되지 않는 구성으로 인해 명령이 command-<ID>
실패할 수 있습니다. 예를 들어 읽기 전용 루트 파일 시스템 또는 기타 특정 구성이 필요한 Azure 정책이 있을 수 있습니다.
해결 방법 2: Pod 만들기를 금지하는 정책에 대한 네임스페이스 제외
Pod 만들기를 aks-command
허용하지 않는 연결된 Azure 정책에 대한 네임스페이스를 제외하는 것이 좋습니다. 예외에 대한 자세한 내용은 Azure Policy의 범위 이해를 참조 하세요.
Azure Policy를 제외하려면 다음을 수행합니다.
Azure Portal에서 정책을 검색하고 선택합니다.
정책 탐색 창에서 작성 섹션을 찾은 다음 할당을 선택합니다.
배정 테이블에서 변경할 할당 이름이 포함된 행을 찾은 다음 할당 이름을 선택합니다.
해당 할당에 대한 정책 할당 페이지에서 할당 편집을 선택합니다.
매개 변수 탭을 선택합니다.
입력 또는 검토 옵션이 필요한 매개 변수만 표시를 선택 취소합니다.
네임스페이스 제외 상자에서 제외할 네임스페이스 목록에 aks-command 네임스페이스를 추가합니다.
또는 정책이 기본 제공 정책이 아닌 경우 Pod의 구성을 command-<ID>
확인하고 필요에 따라 정책을 조정할 수 있습니다. Pod의 YAML 구성을 탐색하려면 다음 명령을 실행합니다.
kubectl get pods command-<ID> --namespace aks-command --output yaml
다음 명령을 실행하여 제한 정책에서 네임스페이스를 제외 aks-command
할 수 있습니다.
az policy exemption create --name ExemptAksCommand --scope /subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.ContainerService/managedClusters/{aks-cluster} --policyAssignment /subscriptions/{subscription-id}/providers/Microsoft.Authorization/policyAssignments/{policy-assignment-id}
원인 3: 필수 역할이 부여되지 않음
이 az aks command invoke
명령을 사용하려면 클러스터에서 다음 역할에 액세스할 수 있어야 합니다.
Microsoft.ContainerService/managedClusters/runCommand/action
Microsoft.ContainerService/managedClusters/commandResults/read
이러한 역할이 az aks command invoke
없는 경우 명령은 필요한 정보를 검색할 수 없습니다.
솔루션 3: 필요한 역할 추가
이 문제를 해결하려면 다음 단계를 따릅니다.
Microsoft.ContainerService/managedClusters/runCommand/action
및Microsoft.ContainerService/managedClusters/commandResults/read
역할을 추가합니다.사용자에게 필요한 역할을 할당합니다.
az role assignment create --assignee {user-principal-name} --role "Azure Kubernetes Service Cluster User Role" --scope /subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.ContainerService/managedClusters/{aks-cluster}
원인 4: Cloud Shell 문제가 있습니다.
이 az aks command invoke
명령은 Azure Cloud Shell 환경에서 직접 실행될 때 예상대로 처리되지 않습니다. Cloud Shell에서 알려진 문제입니다.
솔루션 4a: az login 명령을 먼저 실행합니다.
Cloud Shell에서 명령을 실행 하기 전에 az login 명령을 실행합니다 az aks command invoke
. 예시:
az login
az aks command invoke --resource-group {resource-group} --name {aks-cluster} --command "kubectl get pods"
솔루션 4b: 로컬 컴퓨터 또는 가상 머신에서 명령 실행
az aks command invoke
로컬 컴퓨터 또는 Azure CLI가 설치된 VM(가상 머신)에서 명령을 실행합니다.
타사 정보 고지 사항
이 문서에 나와 있는 다른 공급업체 제품은 Microsoft와 무관한 회사에서 제조한 것입니다. Microsoft는 이들 제품의 성능이나 안정성에 관하여 명시적이든 묵시적이든 어떠한 보증도 하지 않습니다.
도움을 요청하십시오.
질문이 있거나 도움이 필요한 경우 지원 요청을 생성하거나Azure 커뮤니티 지원에 문의하세요. Azure 피드백 커뮤니티에 제품 피드백을 제출할 수도 있습니다.