실패한 상태의 Azure Kubernetes Service 클러스터 또는 노드 문제 해결
이 문서에서는 실패한 상태로 들어가는 AKS(Microsoft Azure Kubernetes Service) 클러스터 또는 노드 문제를 해결하는 방법을 설명합니다.
일반적인 원인
실패한 클러스터 또는 노드 풀의 일반적인 원인은 다음과 같습니다.
원인 | 참조 |
---|---|
CSE(사용자 지정 스크립트 확장) VM(가상 머신) 확장 프로비저닝 오류 | CSE 오류로 인해 노드 준비 안 됨 오류 문제 해결 |
주요 Azure 리소스를 사용할 수 없음 | |
영역/지역 용량이 없어 VM 할당 실패 | |
코어 할당량 초과로 인한 VM 할당 실패 | 할당량 할당 오류 |
고객이 부과한 제한 사항 | |
워크로드 문제 |
클러스터/노드가 실패하는 일반적인 오류의 기본 문제 해결
다음 표에서는 클러스터 또는 노드가 실패한 상태, 해당 설명 및 기본 문제 해결 방법을 입력하여 이러한 오류를 해결할 수 있는 몇 가지 일반적인 오류를 간략하게 설명합니다.
오류 | 설명 | 문제 해결 방법 |
---|---|---|
OutboundConnFailVMExtensionError | 이 오류는 아웃바운드 연결 부족으로 인해 VM 확장을 설치하거나 업데이트하지 못했음을 나타냅니다. | VM 또는 VM 확장 집합의 NSG(네트워크 보안 그룹) 규칙 및 방화벽 설정을 확인합니다. VM 또는 VM 확장 집합이 다음 엔드포인트에 https://aka.ms/aks/outbound https://aka.ms/aks/ssh https://aka.ms/aks/agent https://aka.ms/aks/containerinsights 액세스할 수 있는지 확인합니다. |
드레이닝 오류 | 이 오류는 업그레이드 작업 전에 노드가 드레이닝되지 못했음을 나타냅니다. | kubectl 명령을 사용하여 노드의 Pod 상태 및 이벤트를 확인합니다. kubectl get pods --all-namespaces -o wide kubectl describe pod <pod-name> -n <namespace> 종료되거나 알 수 없는 상태 또는 이벤트의 오류 또는 경고가 있는 Pod를 찾습니다. Pod를 강제로 삭제하거나 노드에서 kubelet 서비스를 다시 시작해야 할 수 있습니다. |
SubscriptionNotRegistered 오류 | 이 오류는 구독이 AKS 리소스 공급자를 사용하도록 등록되지 않음을 나타냅니다. | 명령을 사용하여 구독을 등록합니다 az provider register --namespace Microsoft.ContainerService . |
RequestDisallowedByPolicy 오류 | 이 오류는 구독 또는 리소스 그룹에 적용된 정책에 의해 작업이 차단되었음을 나타냅니다. | 정책 세부 정보 및 정책 할당 범위를 검토합니다. 작업을 허용하려면 정책을 수정하거나 제외해야 할 수 있습니다. |
QuotaExceeded 오류 | 이 오류는 작업이 리소스 종류 또는 지역에 대한 할당량 제한을 초과했음을 나타냅니다. | Azure Portal, Azure CLI 또는 Azure PowerShell을 사용하여 리소스 종류 또는 지역에 대한 현재 할당량 사용량 및 할당량 제한을 확인합니다. 사용되지 않는 리소스를 삭제하거나 할당량 증가를 요청해야 할 수 있습니다. |
PublicIPCountLimitReached 오류 | 이 오류는 작업이 구독 또는 지역에서 만들 수 있는 공용 IP 주소의 최대 수에 도달했음을 나타냅니다. | Azure Portal, Azure CLI 또는 Azure PowerShell을 사용하여 구독 또는 지역에 대한 현재 공용 IP 주소 사용량 및 제한을 확인합니다. 사용되지 않는 일부 공용 IP 주소를 삭제하거나 공용 IP 주소 제한의 증가를 요청해야 할 수 있습니다. |
OverconstrainedAllocationRequest 오류 | 이 오류는 작업이 지역에서 요청된 VM 크기를 할당하지 못했음을 나타냅니다. | Azure Portal, Azure CLI 또는 Azure PowerShell을 사용하여 지역에서 VM 크기의 가용성을 확인합니다. 다른 VM 크기 또는 다른 지역을 선택해야 할 수 있습니다. |
ReadOnlyDisabledSubscription 오류 | 이 오류는 구독이 현재 사용하지 않도록 설정되어 있으며 읽기 전용으로 설정되어 있음을 나타냅니다. | 청구 문제, 만료된 크레딧 또는 정책 위반으로 인해 구독이 일시 중단되었을 수 있으므로 구독 권한을 검토하고 조정합니다. |
클러스터/노드가 실패하는 다른 가능한 문제에 대한 기본 문제 해결
이 표에서는 클러스터 또는 노드가 실패한 상태, 해당 설명 및 솔루션을 입력하여 이러한 문제를 해결할 수 있는 다른 가능한 문제에 대해 설명합니다.
문제 | 설명 | 솔루션 |
---|---|---|
서브넷 크기가 너무 작습니다. | 서브넷에 필요한 수의 노드를 수용할 수 있는 충분한 공간이 없기 때문에 작업에서 클러스터를 만들거나 업데이트할 수 없습니다. | 노드 풀을 삭제하고 Azure Portal, Azure CLI 또는 Azure PowerShell을 사용하여 더 큰 서브넷 크기의 새 풀을 만듭니다. |
가상 네트워크가 차단됨 | 방화벽 또는 사용자 지정 DNS(도메인 이름 시스템) 설정이 노드의 아웃바운드 연결을 차단하기 때문에 클러스터 API 서버 또는 Kubernetes 컨트롤 플레인을 사용하여 작업을 커뮤니티화할 수 없습니다. | 방화벽에서 노드의 트래픽을 허용하고 Azure Portal, Azure CLI 또는 Azure PowerShell을 사용하여 Azure에 대한 DNS 확인을 설정합니다. |
PDB 문제 | PDB가 하나 이상의 Pod 제거를 중지했기 때문에 작업에서 클러스터를 업데이트할 수 없습니다. PDB는 특정 기간 동안 자발적으로 종료할 수 있는 Pod 수를 제한하는 리소스입니다. | 일시적으로 PDB를 제거하고 클러스터를 조정한 다음 kubectl 명령줄 도구를 사용하여 PDB를 다시 추가합니다. |
인프라 문제 | Azure에서 리소스를 관리하는 ARM(Azure Resource Manager) 서비스의 내부 문제로 인해 작업이 클러스터를 업데이트할 수 없습니다. | Azure CLI 또는 Azure PowerShell을 사용하여 각 노드 풀에 대한 에이전트 풀 조정 및 관리되는 클러스터에 대한 조정을 수행합니다. |
API 서버 오류 | 작동 중단 또는 버그로 인해 클러스터 API 서버 또는 Kubernetes 컨트롤 플레인에 연결할 수 없습니다. | AKS 지원 팀에 보고하고 관련 로그 및 진단 정보를 제공합니다. Azure Portal, Azure CLI 또는 Azure PowerShell을 사용하여 로그 및 진단 정보를 가져올 수 있습니다. |
참고 항목
- 이전 표에 언급된 작업은 고객 쪽에서 트리거된 모든 업데이트(
PUT
) 작업을 나타냅니다. - Kubernetes에는 컨트롤러 내에 구성 요소가 있습니다. 클러스터 상태 및 Kubelet용 컨테이너 실행 또는 클라우드 공급자용 부하 분산 장치와 같은 잠재적으로 외부 상태를 포함하여 전 세계의 실제 상태를 보장합니다. 개체에 지정된 원하는 상태에 맞춥니다. 이 맞춤 프로세스는 컨트롤러의 핵심 함수입니다. AKS의 경우 이 구성 요소는 AKS 클러스터의 상태가 원하는 구성에 맞게 조정되도록 합니다. 수동으로 트리거하려면 다음을 실행
az resource update --ids <AKS cluster id>
합니다. 를 실행az aks show -n <cluster name> -g <cluster resource group> -o json --query id
하여 AKS 클러스터 ID를 가져올 수 있습니다. 실제 상태와 원하는 상태 간에 차이가 있는 경우 이러한 불일치를 수정하는 데 필요한 조치를 취합니다.
프로비저닝 상태 검사
클러스터 상태를 확인하려면 프로비전 상태 검사를 선택합니다. 그런 다음 클러스터 및 에이전트 풀의 프로비전 상태가 표시됩니다.
시나리오 1: 클러스터가 실패한 상태입니다.
이 문제를 해결하려면 오류를 발생시키는 작업을 가져와서 오류를 파악합니다. 클러스터가 실패할 수 있는 두 가지 일반적인 작업 오류는 다음과 같습니다.
- 클러스터 생성 실패
- 클러스터 업그레이드 실패함
최근에 만들거나 업그레이드한 클러스터가 실패한 상태인 경우 다음 방법을 사용하여 오류를 해결합니다.
활동 로그를 검사하여 실패의 근본 원인을 식별합니다.
Azure Portal, Azure CLI 또는 Azure PowerShell을 사용하여 활동 로그를 볼 수 있습니다.
활동 로그는 오류와 관련된 오류 코드 및 메시지를 표시할 수 있습니다. 특정 오류에 대한 자세한 내용은 클러스터/노드가 실패하는 일반적인 오류의 기본 문제 해결 섹션을 참조하세요.
AKS 진단 및 문제 해결 기능을 사용하여 일반적인 문제를 해결하고 해결합니다.
참고 항목
이 기능은 Azure Portal 및 Azure CLI에서만 사용할 수 있습니다.
Azure Portal을 사용하여 실패한 클러스터에 대한 활동 로그 보기
Azure Portal에서 실패한 클러스터에 대한 활동 로그를 보려면 다음 단계를 수행합니다.
Azure Portal에서 리소스 그룹 페이지로 이동하여 클러스터가 포함된 리소스 그룹을 선택합니다.
개요 페이지의 리소스 목록에서 클러스터 이름을 선택합니다.
클러스터 페이지의 왼쪽 메뉴에서 활동 로그를 선택합니다.
활동 로그 페이지에서 상태, Timespan, 시작 이벤트 및 이벤트 범주별로 이벤트를 필터링할 수 있습니다. 예를 들어 상태 드롭다운 목록에서 실패를 선택하여 실패한 이벤트만 볼 수 있습니다.
이벤트의 세부 정보를 확인하려면 목록에서 이벤트 이름을 선택합니다. 이벤트 요약, 속성 및 JSON 데이터가 포함된 새 창이 열립니다. JSON 데이터를 파일로 다운로드할 수도 있습니다.
이벤트와 연결된 오류 코드 및 메시지를 확인하려면 이벤트 요약의 상태 섹션까지 아래로 스크롤합니다. 속성 및 JSON 데이터 섹션에서 오류 정보를 찾을 수도 있습니다.
Azure CLI를 사용하여 실패한 클러스터에 대한 활동 로그 보기
Azure CLI를 사용하여 실패한 클러스터에 대한 활동 로그를 보려면 다음 단계를 수행합니다.
컴퓨터에 Azure CLI를 설치하고 Azure 계정으로 로그인합니다.
명령을 사용하여
az group list
구독의 리소스 그룹을 나열하고 클러스터가 포함된 리소스 그룹의 이름을 찾습니다.매개 변수와 함께 명령을 사용하여 리소스 그룹의 리소스를
az resource list
--resource-group
나열하고 클러스터의 이름을 찾습니다.명령과
--resource
매개 변수를az monitor activity-log list
사용하여 클러스터의 활동 로그를--resource-group
나열합니다. , ,--caller
--start-time
--end-time
및--filter
매개 변수를--status
사용하여 다양한 기준으로 이벤트를 필터링할 수도 있습니다. 예를 들어 실패한 이벤트만 확인하는 데 사용할--status Failed
수 있습니다.명령
--resource-group
--resource
과--event-id
매개 변수를az monitor activity-log show
사용하여 특정 이벤트의 세부 정보를 표시합니다. 이전 명령의 출력에서 이벤트 ID를 찾을 수 있습니다. 출력에는 이벤트 요약, 속성 및 JSON 데이터가 포함됩니다. 매개 변수를--output
사용하여 출력 형식을 변경할 수도 있습니다.이벤트와 연결된 오류 코드 및 메시지를 보려면 명령 출력에서 필드를 찾
statusMessage
습니다. 속성 및 JSON 데이터 섹션에서 오류 정보를 찾을 수도 있습니다.
실패한 클러스터에 대한 AKS 진단 및 문제 해결 기능 사용
Azure Portal에서 AKS 클러스터 리소스로 이동하고 왼쪽 메뉴에서 진단 및 문제 해결을 선택합니다. 진단 검사를 실행하고 권장 솔루션을 가져오기 위해 선택할 수 있는 범주 및 시나리오 목록이 표시됩니다.
Azure CLI에서 명령과 --resource-group
매개 변수를 --name
사용하여 az aks collect
클러스터 노드에서 진단 데이터를 수집합니다. 또한 매개 변수 및 --sas-token
매개 변수를 --storage-account
사용하여 데이터를 업로드할 Azure Storage 계정을 지정할 수 있습니다. 출력에는 결과 및 제안된 작업을 볼 수 있는 문제 진단 및 해결 블레이드에 대한 링크가 포함됩니다.
문제 진단 및 해결 블레이드에서 클러스터 문제를 범주로 선택할 수 있습니다. 문제가 발견되면 문제를 해결하기 위해 따를 수 있는 가능한 솔루션 목록이 표시됩니다.
시나리오 2: 노드가 실패한 상태입니다.
드물게 Azure 디스크 분리 작업이 부분적으로 실패하여 노드 VM이 실패 상태로 남을 수 있습니다.
이 문제를 해결하려면 다음 방법 중 하나를 사용하여 VM 상태를 수동으로 업데이트합니다.
가용성 집합을 기반으로 하는 클러스터의 경우 다음 az vm update 명령을 실행합니다.
az vm update --resource-group <resource-group-name> --name <vm-name>
VM 확장 집합을 기반으로 하는 클러스터의 경우 다음 az vmss update-instances 명령을 실행합니다 .
az vmss update-instances --resource-group <resource-group-name> --name <scale-set-name> --instance-id <vm-or-scale-set-id>
시나리오 3: 노드 풀이 실패한 상태입니다.
이 문제는 노드 풀을 백업하는 VM 확장 집합 또는 가용성 집합에서 프로비전, 크기 조정 또는 업데이트 중에 오류가 발생할 때 발생할 수 있습니다. 이 문제는 용량 부족, 할당량 제한, 네트워크 문제, 정책 위반, 리소스 잠금 또는 VM이 제대로 할당되거나 구성되지 않도록 하는 기타 요인 때문일 수 있습니다.
이 문제를 해결하려면 다음 단계를 수행하십시오.
az aks nodepool show
명령을 사용하여 노드 풀의 상태를 확인합니다. 프로비전 상태가Failed
면 출력에서 오류 메시지와 코드를 볼 수 있습니다.- 또는
az vm availability-set show
명령을 사용하여 VM 확장 집합 또는 가용성 집합의az vmss show
상태를 확인합니다. 프로비전 상태가Failed
면 출력에서 오류 메시지와 코드를 볼 수 있습니다. - 또는
az vm list
명령을 사용하여 노드 풀에서 개별 VM의az vmss list-instances
상태를 확인합니다. VM이Failed
있거나Unhealthy
상태인 경우 출력에서 오류 메시지와 코드를 볼 수 있습니다. - VM 확장 집합 또는 가용성 집합의 활동 로그 및 진단 설정을 확인하여 오류의 원인을 나타내는 이벤트 또는 경고가 있는지 확인합니다. Azure Portal, Azure CLI 또는 Azure Monitor API를 사용하여 활동 로그 및 진단 설정에 액세스할 수 있습니다.
- 노드 풀이 배포된 지역 및 구독의 할당량 및 용량을 확인합니다. 명령 또는 Azure Portal을 사용하여
az vm list-usage
할당량 및 용량을 확인할 수 있습니다. 할당량 또는 용량 한도에 도달하면 사용되지 않는 일부 리소스를 늘리거나 삭제할 수 있습니다. - 노드 풀의 정책 및 역할 할당을 확인합니다. 명령 및
az role
명령 또는 Azure Portal을 사용하여az policy
정책 정의, 할당, 규정 준수 및 예외를 확인할 수 있습니다. 명령 또는 Azure Portal을 사용하여az role assignment
노드 풀의 역할 할당 및 권한을 확인할 수도 있습니다. - 노드 풀의 리소스 잠금을 확인합니다. 명령 또는 Azure Portal을 사용하여
az lock
잠금 수준, 범위 및 메모를 확인할 수 있습니다. 필요한 경우 잠금을 삭제하거나 업데이트할 수도 있습니다.
기타 로깅 및 진단 도구
이전 문제 해결 방법이 문제를 해결하지 못하는 경우 다음 로깅 및 진단 도구를 사용하여 자세한 정보를 수집하고 근본 원인을 식별할 수 있습니다.
컨테이너용 Azure Monitor:
이 서비스는 AKS 클러스터 및 노드에서 메트릭 및 로그를 수집하고 분석합니다. 컨테이너용 Azure Monitor는 클러스터 및 노드 상태, 성능 및 가용성을 모니터링할 수 있습니다. 컨테이너 로그, kubelet 로그 및 노드 부팅 진단 로그를 보는 데 사용할 수도 있습니다.
-
이 도구는 AKS 클러스터에서 노드 및 Pod 로그, 네트워크 정보 및 클러스터 구성을 수집하고 Azure Storage 계정에 업로드합니다. 이 도구는 DNS 확인, 네트워크 연결 및 노드 상태와 같은 일반적인 클러스터 문제를 해결하는 데 도움이 될 수 있습니다. 수집된 로그가 연결된 지원 요청을 생성하는 데 사용할 수도 있습니다.
AKS 진단
이 도구는 AKS 클러스터 및 노드에서 일련의 검사를 실행하고 일반적인 문제에 대한 권장 사항 및 수정 단계를 제공합니다. 이 도구를 사용하면 클러스터 만들기, 업그레이드, 크기 조정, 네트워킹, 스토리지 및 보안과 관련된 문제를 해결할 수 있습니다. 진단 결과가 연결된 지원 요청을 생성하는 데 사용할 수도 있습니다.
도움을 요청하십시오.
질문이 있거나 도움이 필요한 경우 지원 요청을 생성하거나Azure 커뮤니티 지원에 문의하세요. Azure 피드백 커뮤니티에 제품 피드백을 제출할 수도 있습니다.