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 형식의 자세한 로그 예입니다.
{
"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에서 만들어졌으며 클러스터가 표시되어 있나요? 이 경우 문제를 해결하는 데 도움이 되는 클러스터 인사이트를 생성할 수 있습니다. 이 기능에 액세스하려면 다음 단계를 수행합니다.
Azure Portal에서 Kubernetes 서비스를 검색하고 선택합니다.
AKS 클러스터의 이름을 선택합니다.
AKS 클러스터 페이지의 탐색 창에서 진단 및 문제 해결을 선택합니다.
문제 진단 및 해결 페이지에서 클러스터 인사이트 링크를 선택합니다. 클러스터 인사이트 도구는 클러스터를 분석한 다음 Cluster Insights 페이지의 관찰 및 솔루션 섹션에서 해당 결과 목록을 제공합니다.
결과 중 하나를 선택하여 문제 및 가능한 해결 방법에 대한 자세한 정보를 확인합니다.
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 피드백 커뮤니티에 제품 피드백을 제출할 수도 있습니다.