다음을 통해 공유


AKS 클러스터 만들기 문제의 기본 문제 해결

이 문서에서는 AKS(Microsoft Azure Kubernetes Service) 클러스터를 성공적으로 만들거나 배포할 수 없는 경우 사용할 기본 문제 해결 방법을 간략하게 설명합니다.

필수 조건

  • Azure CLI (버전 2.0.59 이상).

  • Kubernetes kubectl 도구입니다. Azure CLI를 사용하여 kubectl을 설치하려면 az aks install-cli 명령을 실행합니다.

Azure CLI에서 오류 보기

Azure CLI를 사용하여 클러스터를 만들려고 할 때 작업이 실패하면 출력에 오류 정보가 표시됩니다. 다음은 샘플 Azure CLI 명령 및 출력입니다.

# Create a cluster specifying subnet

az aks create --resource-group myResourceGroup
--name MyManagedCluster \
--load-balancer-sku standard \
--vnet-subnet-id /subscriptions/<subscriptions-id>/resourceGroups/myResourceGroup/providers/Microsoft.Network/virtualNetworks/aks_demo_vnet/subnets/AKS

출력 샘플:

It is highly recommended to use USER assigned identity (option --assign-identity)when you want to bring you own subnet, which will have no latency for the role assignment to take effect. When you SYSTEM assigned identity, azure-cli will grant Network Contributor role to the system assigned identity after the cluster is created, and the role assignment will take some time to take effect, see https://learn.microsoft.com/azure/aks/use-managed-identity, proceed to create cluster with system assigned identity? (y/N): y`

(ControlPlaneAddOnsNotReady) Pods not in Running status: konnectivity-agent-67f7f5554f-nsw2g,konnectivity-agent-8686cb54fd-xlsgk,metrics-server-6bc97b47f7-dfhbr,coredns-845757d86-7xjqb,coredns-autoscaler-5f85dc856b-mxkrj

출력에서 오류 코드 및 오류 메시지를 식별할 수 있습니다. 이 경우 다음과 같습니다.

  • 오류 코드: ControlPlaneAddOnsNotReady
  • 오류 메시지: Pods not in Running status: konnectivity-agent-67f7f5554f-nsw2g,konnectivity-agent-8686cb54fd-xlsgk,metrics-server-6bc97b47f7-dfhbr,coredns-845757d86-7xjqb,coredns-autoscaler-5f85dc856b-mxkrj.

이러한 설명에는 클러스터 만들기에서 무엇이 잘못되었는지에 대한 세부 정보가 포함되어 있는 경우가 많으며, 더 많은 세부 정보가 포함된 문서에 연결됩니다. 또한 Azure CLI 작업에서 생성하는 오류에 따라 문제 해결 문서를 참조로 사용할 수 있습니다.

Azure Portal에서 오류 세부 정보 보기

Azure Portal에서 AKS 클러스터 만들기 오류를 조사하려면 활동 로그엽니다. 필요에 맞게 결과를 필터링할 수 있습니다. 이렇게 하려면 필터 추가를 선택하여 필터 에 속성을 더 추가합니다.

필터를 추가하는 방법의 스크린샷

활동 로그 페이지에서 작업 이름 열에 관리형 클러스터 만들기 또는 업데이트가 표시되는 로그 항목을 찾습니다.

열에서 시작한 이벤트는 작업을 수행한 사용자(회사 계정, 학교 계정 또는 Azure 관리 ID일 수 있음)를 보여줍니다.

작업이 성공하면 상태 열 값이 수락됩니다. 클러스터 구성 요소를 만들기 위한 하위 작업 항목(예: 다음 작업 이름)도 표시됩니다.

  • 경로 테이블 만들기 또는 업데이트
  • 네트워크 보안 그룹 만들기 또는 업데이트
  • 사용자 할당 ID 만들기 업데이트
  • Load Balancer 만들기 또는 업데이트
  • 공용 IP 주소 만들기 또는 업데이트
  • 역할 할당 만들기
  • 리소스 그룹 업데이트

이러한 하위 운용 항목에서 상태 값은 Succeeded이고 필드에 의해 시작된 이벤트는 AzureContainerService설정됩니다.

활동 로그의 보기 스크린샷.

대신 오류가 발생하면 어떻게 해야 할까요? 이 경우 상태 값이 실패합니다. 클러스터 구성 요소를 만드는 작업과 달리 실패한 하위 작업 항목을 확장하여 검토해야 합니다. 일반적인 하위 작업 이름은 'audit' 정책 작업 및 'auditIfNotExists' 정책 작업같은 정책 작업입니다. 모든 하위 작업에서 반드시 함께 실패하는 것은 아닙니다. 그 중 일부는 성공할 것으로 예상할 수 있습니다.

실패한 하위 운용 중 하나를 선택하여 자세히 조사합니다. 요약, JSON변경 기록 탭을 선택하여 문제를 해결합니다. JSON 탭에는 오류에 대한 출력 텍스트가 JSON 형식으로 포함되어 있으며 일반적으로 가장 유용한 정보를 제공합니다.

JSON 형식의 자세한 로그 스크린샷

다음은 JSON 형식의 자세한 로그 예입니다.

{
     "status": {
        "value": "Failed",
        "localizedValue": "Failed"
    },
    "subStatus": {
        "value": "",
        "localizedValue": ""
    },
    "submissionTimestamp": "2024-08-30T10:06:07Z",
    "subscriptionId": "<subscriptionId>",
    "tenantId": "<tenantId>",
    "properties": {
        "statusMessage": "{\"status\":\"Failed\",\"error\":{\"code\":\"ResourceOperationFailure\",\"message\":\"The resource operation completed with terminal provisioning state 'Failed'.\",\"details\":[{\"code\":\"VMExtensionProvisioningError\",\"message\":\"Unable to establish outbound connection from agents, please see https://learn.microsoft.com/en-us/troubleshoot/azure/azure-kubernetes/error-code-outboundconnfailvmextensionerror and https://aka.ms/aks-required-ports-and-addresses for more information.\"}]}}",
}
}

클러스터 인사이트 보기

클러스터가 Azure Portal에서 만들어졌으며 클러스터가 표시되어 있나요? 이 경우 문제를 해결하는 데 도움이 되는 클러스터 인사이트를 생성할 수 있습니다. 이 기능에 액세스하려면 다음 단계를 수행합니다.

  1. Azure Portal에서 Kubernetes 서비스를 검색하고 선택합니다.

  2. AKS 클러스터의 이름을 선택합니다.

  3. AKS 클러스터 페이지의 탐색 창에서 진단 및 문제 해결을 선택합니다.

  4. 문제 진단 및 해결 페이지에서 클러스터 인사이트 링크를 선택합니다. 클러스터 인사이트 도구는 클러스터를 분석한 다음 Cluster Insights 페이지의 관찰 및 솔루션 섹션에서 해당 결과 목록을 제공합니다.

  5. 결과 중 하나를 선택하여 문제 및 가능한 해결 방법에 대한 자세한 정보를 확인합니다.

Azure Portal에서 리소스 보기

Azure Portal에서 클러스터를 빌드할 때 생성된 리소스를 볼 수 있습니다. 일반적으로 이러한 리소스는 이름이 MC_ 시작하는 리소스 그룹에 있습니다. 관리되는 클러스터 리소스 그룹에는 MC_MyResourceGroup_MyManagedCluster_<location-code>와 같은 이름이 있을 수 있습니다. 그러나 사용자 지정 관리형 클러스터 리소스 그룹을 사용하여 클러스터를 빌드한 경우 이름이 다를 수 있습니다.

리소스 그룹을 찾으려면 Azure Portal에서 리소스 그룹을 검색하여 선택한 다음 클러스터가 만들어진 리소스 그룹을 선택합니다. 리소스 목록은 리소스 그룹의 개요 페이지에 표시됩니다.

Warning

MC_ 리소스 그룹에서 리소스를 수정하지 않는 것이 좋습니다. 이 작업은 AKS 클러스터에 부정적인 영향을 줄 수 있습니다.

가상 머신 확장 집합의 상태를 검토하려면 리소스 그룹의 리소스 목록에서 확장 집합 이름을 선택할 수 있습니다. aks-nodepool1-12345678-vmss와 유사한 Name 값이 있을 수 있으며 가상 머신 확장 집합형식 값일 있습니다. 확장 집합의 상태는 노드 풀의 개요 페이지 맨 위에 표시되며, 자세한 내용은 Essentials 제목에 표시됩니다. 배포에 실패하면 표시된 상태가 실패합니다.

모든 리소스의 경우 세부 정보를 검토하여 배포가 실패한 이유를 더 잘 이해할 수 있습니다. 확장 집합의 경우 실패 상태 텍스트를 선택하여 실패에 대한 세부 정보를 볼 수 있습니다. 세부 정보는 상태, 수준코드 열을 포함하는 행에 있습니다. 다음 예제에서는 열 값의 행을 보여 있습니다.

Column 예제 값
상태 프로비전 실패
Level 오류
코드 ProvisioningState/failed/VMExtensionProvisioningError

메시지 필드를 보려면 행을 선택합니다. 여기에는 해당 실패에 대한 더 많은 정보가 포함됩니다. 예를 들어 예제 행의 메시지 필드는 다음 텍스트에서 시작됩니다.

확장 프로그램 'vmssCSE'를 처리할 때 VM에서 오류를 보고했습니다. 오류 메시지: "사용 실패: 명령을 실행하지 못했습니다. 종료 상태=50 [stdout] [stderr] 0 0 0 --으로 종료된 명령:

이 정보로 무장하면 확장 집합의 VM이 실패하고 종료 상태 50이 생성된 것으로 결론을 내릴 수 있습니다.

참고 항목

클러스터 배포가 이러한 리소스가 만들어진 지점에 도달하지 않은 경우 Azure Portal에서 관리되는 클러스터 리소스 그룹을 검토하지 못할 수 있습니다.

Kubectl 명령 사용

클러스터의 오류를 해결하는 데 도움이 되는 다른 옵션은 kubectl 명령을 사용하여 클러스터에 배포된 리소스에 대한 세부 정보를 가져옵니다. 이렇게 하려면 먼저 AKS 클러스터에 로그인합니다.

az aks get-credentials --resource-group MyResourceGroup --name MyManagedCluster

오류 유형 및 발생한 시기에 따라 클러스터에 로그인하여 자세한 내용을 확인할 수 없을 수 있습니다. 그러나 클러스터가 만들어지고 Azure Portal에 표시되는 경우 로그인하고 kubectl 명령을 실행할 수 있어야 합니다.

클러스터 노드 보기(kubectl get nodes)

클러스터 노드의 상태를 확인하려면 명령을 실행하여 노드를 kubectl get nodes 확인합니다. 이 예제에서는 클러스터에서 보고하는 노드가 없습니다.

$ kubectl get nodes

No resources found

시스템 네임스페이스에서 Pod 보기(kubectl get Pod)

kube 시스템 네임스페이스에서 Pod를 보는 것도 문제를 해결하는 좋은 방법입니다. 이 메서드를 사용하면 Kubernetes 시스템 Pod의 상태를 볼 수 있습니다. 이 예제에서는 다음 명령을 입력합니다.kubectl get pods

$ kubectl get pods -n kube-system
NAME                                  READY   STATUS    RESTARTS   AGE
coredns-845757d86-7xjqb               0/1     Pending   0          78m
coredns-autoscaler-5f85dc856b-mxkrj   0/1     Pending   0          77m
konnectivity-agent-67f7f5554f-nsw2g   0/1     Pending   0          77m
konnectivity-agent-8686cb54fd-xlsgk   0/1     Pending   0          65m
metrics-server-6bc97b47f7-dfhbr       0/1     Pending   0          77m

Pod의 상태 설명(kubectl describe Pod)

Pod의 상태를 설명하여 구성 세부 정보 및 Pod에서 발생한 모든 이벤트를 볼 수 있습니다. kubectl describe pods 명령을 실행합니다.

$ kubectl describe pod coredns-845757d86-7xjqb -n kube-system
Name:                 coredns-845757d86-7xjqb
Namespace:            kube-system
Priority:             2000001000
Priority Class Name:  system-node-critical
Node:                 <none>
Labels:               k8s-app=kube-dns
                      kubernetes.io/cluster-service=true
                      pod-template-hash=845757d86
                      version=v20
...
Events:
  Type     Reason            Age                 From               Message
  ----     ------            ----                ----               -------
  Warning  FailedScheduling  24m (x1 over 25m)   default-scheduler  no nodes available to schedule pods
  Warning  FailedScheduling  29m (x57 over 84m)  default-scheduler  no nodes available to schedule pods

명령 출력에서 사용할 수 있는 노드가 없으므로 Pod가 노드에 배포할 수 없음을 확인할 수 있습니다.

도움을 요청하십시오.

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