다음을 통해 공유


"az aks command invoke" 오류 해결

이 문서에서는 akS(모든 Azure Kubernetes Service) 클러스터, 특히 프라이빗 AKS 클러스터에 성공적으로 연결할 수 있도록 az aks 명령이 Microsoft Azure CLI에서 오류를 호출하도록 resolve 방법을 설명합니다.

다른 연결 메서드는 다음 표와 같이 추가 구성 구성 요소를 사용해야 합니다.

연결 방법 추가 구성 구성 요소
가상 네트워크 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 오류로 인해 관리형 클러스터에서 명령을 실행하지 못했습니다. details: 허용 웹후크 "validation.gatekeeper.sh"이 요청을 <거부했습니다. policy-specific-message> 원인 2: Azure Policy Pod 만들기를 허용하지 않음
서버 오류(사용할 수 없음): 네임스페이스는 사용할 수 없습니다. 사용자 "<ID>"는 클러스터 scope API 그룹 ""의 리소스< "리소스>"를 나열할 수 없습니다. 원인 3: 필수 역할이 부여되지 않음
MSI에 연결하지 못했습니다. MSI가 올바르게 구성되어 있는지 확인하세요.

반환된 토큰 요청 가져오기: 응답 [400];
원인 4: Cloud Shell 문제가 있습니다.

원인 1: 노드 또는 리소스 제약 조건으로 인해 Pod를 만들 수 없습니다.

Pod가 Not Found 와 같은 Running성공적인 상태에 도달할 수 없으므로 작업은 상태 command-<ID> 반환합니다. (대부분의 경우 Pod는 상태에 유지됩니다 Pending .) 이 경우 노드는 Pod를 예약할 수 없습니다. 이 시나리오에는 다음과 같은 다양한 원인이 있을 수 있습니다.

  • 리소스 제약 조건
  • 또는 SchedulingDisabled 상태가 있는 NotReady 노드
  • Pod가 허용할 수 없는 taints가 있는 노드
  • 기타 원인

해결 방법 1: Pod를 예약하고 실행할 수 있도록 구성 변경

Pod를 command-<ID> 예약하고 실행할 수 있는지 확인합니다.

원인 2: Azure Policy Pod 만들기를 허용하지 않음

특정 Azure 정책이 있는 경우 Pod에서 az aks command invoke 허용되지 않는 구성으로 인해 명령이 실패할 command-<ID> 수 있습니다. 예를 들어 읽기 전용 루트 파일 시스템 또는 기타 특정 구성이 필요한 Azure 정책이 있을 수 있습니다.

해결 방법 2: Pod 생성을 금지하는 정책에 대한 네임스페이스 제외

Pod 생성을 aks-command 허용하지 않는 연결된 Azure 정책에 대한 네임스페이스를 제외하는 것이 좋습니다. 예외에 대한 자세한 내용은 Azure Policy scope 이해를 참조하세요.

Azure Policy 제외하려면 다음을 수행합니다.

  1. Azure Portal정책을 검색하여 선택합니다.

  2. 정책 탐색 창에서 작성 섹션을 찾은 다음 할당 선택합니다.

  3. 할당 테이블에서 변경할 할당 이름이 포함된 행을 찾은 다음 할당 이름을 선택합니다.

  4. 해당 할당에 대한 정책 할당 페이지에서 할당 편집을 선택합니다.

  5. 매개 변수 탭을 선택합니다.

  6. 입력 또는 검토가 필요한 매개 변수만 표시 옵션을 선택 취소합니다.

  7. 네임스페이스 제외 상자에서 제외할 네임스페이스 목록에 aks-command 네임스페이스를 추가합니다.

또는 정책이 기본 제공 정책이 아닌 경우 Pod 구성 command-<ID> 을 검사 필요에 따라 정책을 조정할 수 있습니다. Pod의 YAML 구성을 탐색하려면 다음 명령을 실행합니다.

kubectl get pods command-<ID> --namespace aks-command --output yaml

원인 3: 필수 역할이 부여되지 않음

명령을 사용하려면 클러스터에서 az aks command invoke 다음 역할에 액세스할 수 있어야 합니다.

  • Microsoft.ContainerService/managedClusters/runCommand/action
  • Microsoft.ContainerService/managedClusters/commandResults/read

이러한 역할이 az aks command invoke 없는 경우 명령은 필요한 정보를 검색할 수 없습니다.

해결 방법 3: 필요한 역할 추가

Microsoft.ContainerService/managedClusters/runCommand/actionMicrosoft.ContainerService/managedClusters/commandResults/read 역할을 추가합니다.

원인 4: Cloud Shell 문제가 있습니다.

명령은 az aks command invokeAzure Cloud Shell 환경에서 직접 실행될 때 예상대로 처리되지 않습니다. 이는 Cloud Shell 알려진 문제입니다.

해결 방법 4a: az login 명령을 먼저 실행합니다.

Cloud Shell 를 실행하기 전에 az login 명령을 실행az aks command invoke합니다.

해결 방법 4b: 로컬 컴퓨터 또는 가상 머신에서 명령 실행

az aks command invoke 로컬 컴퓨터 또는 Azure CLI가 설치된 VM(가상 머신)에서 명령을 실행합니다.

타사 정보 고지 사항

이 문서에 나와 있는 다른 공급업체 제품은 Microsoft와 무관한 회사에서 제조한 것입니다. Microsoft는 이들 제품의 성능이나 안정성에 관하여 명시적이든 묵시적이든 어떠한 보증도 하지 않습니다.

도움을 요청하십시오.

질문이 있거나 도움이 필요한 경우 지원 요청을 생성하거나Azure 커뮤니티 지원에 문의하세요. Azure 피드백 커뮤니티에 제품 피드백을 제출할 수도 있습니다.