이 문서에서는 AKS(Microsoft Azure Kubernetes Service) 클러스터를 만들거나 시작, 크기 조정 또는 업그레이드할 때 발생할 수 있는 오류(오류 코드OutboundConnFailVMExtensionError, 오류 번호 50라고도 함)를 식별하고 해결하는 ERR_OUTBOUND_CONN_FAIL 방법을 설명합니다.
Prerequisites
Symptoms
AKS 클러스터를 만들거나 확장하거나 업그레이드하려고 하면 다음과 같은 오류 메시지가 표시될 수 있습니다.
에이전트에서 아웃바운드 연결을 설정할 수 없습니다. 자세한 내용은 참조 https://aka.ms/aks-required-ports-and-addresses 하세요.
세부 정보: Code="VMExtensionProvisioningError"
Message="VM은 확장 'vmssCSE'를 처리할 때 오류를 보고했습니다.
오류 메시지: "사용 실패: 명령을 실행하지 못했습니다. 종료 상태=50\n[stdout]\n\n[stderr]\nnc로 종료된 명령: mcr.microsoft.com 포트 443(tcp)에 연결하지 못했습니다. 연결 시간이 초과됨\nCommand가 0이 아닌 상태로 종료됨
오류 세부 정보: "vmssCSE 오류 메시지: {vmssCSE 종료 상태=50, output=pt/apt.conf.d/95proxy...}
이 오류로 인해 실행 중인 노드가 NotReady가 되거나 클러스터의 일부 또는 모든 노드에서 아웃바운드 연결이 차단되기 때문에 이미지 끌어오기 오류가 발생할 수 있습니다.
Cause
노드 프로비전에 필요한 구성 요소를 다운로드하는 사용자 정의 스크립트 확장이 패키지 가져오기에 필요한 아웃바운드 연결을 설정할 수 없습니다. 공용 클러스터의 경우 노드는 포트 443에서 MCR(Microsoft Container Registry) 엔드포인트(mcr.microsoft.com)와 통신하려고 합니다.
아웃바운드 트래픽이 차단되는 데는 여러 가지 이유가 있습니다. 아웃바운드 연결 오류를 해결하는 가장 좋은 방법은 Azure Virtual Network 검증 도구(미리 보기)를 사용하여 연결 분석을 실행하는 것입니다. 연결 분석을 실행하여 트래픽 흐름 내의 홉과 트래픽을 차단하는 Azure 네트워킹 리소스 내의 잘못된 구성을 시각화할 수 있습니다. 아웃바운드 연결 오류를 수동으로 해결하려면 SSH(Secure Shell 프로토콜)를 사용하여 노드에 연결할 수 있습니다. 이 섹션에서는 두 가지 유형의 조사에 대한 지침을 설명합니다.
Azure 네트워크 리소스가 엔드포인트에 대한 트래픽을 차단하는지 확인
Azure 네트워크 리소스로 인해 엔드포인트에 대한 트래픽이 차단되었는지 확인하려면 Azure Virtual Network 검증 도구(미리 보기) 도구를 사용하여 AKS 클러스터 노드에서 엔드포인트로의 연결 분석을 실행합니다. 연결 분석은 다음 리소스를 다룹니다.
- Azure 부하 분산기
- Azure Firewall
- NAT(네트워크 주소 변환) 게이트웨이
- 네트워크 보안 그룹(NSG)
- 네트워크 정책
- 사용자 정의 경로(경로 테이블)
- 가상 네트워크 피어링
Note
Azure Virtual Network 검증 도구(미리 보기)는 사용자 지정 방화벽과 같은 외부 또는 타사 네트워킹 리소스에 액세스할 수 없습니다. 연결 분석에서 차단된 트래픽을 감지하지 않는 경우 트래픽 흐름의 모든 홉을 포함하도록 외부 네트워킹을 수동으로 확인하는 것이 좋습니다.
현재 Azure CNI 오버레이를 사용하는 클러스터는 이 기능에 대해 지원되지 않습니다. CNI 오버레이에 대한 지원은 2025년 8월에 예정되어 있습니다.
- Azure Portal에서 클러스터로 이동합니다. 사이드바에서 설정-> 노드 풀 블레이드로 이동합니다.
- 연결 분석을 실행하려는 nodepool을 식별합니다. nodepool을 클릭하여 범위로 선택합니다.
- 페이지 맨 위에 있는 도구 모음에서 "연결 분석(미리 보기)"을 선택합니다. 표시되지 않으면 세 개의 점 "..."을 클릭합니다. 페이지 맨 위에 있는 도구 모음에서 확장된 메뉴를 엽니다.
- VMSS(Virtual Machine Scale Set) 인스턴스를 원본으로 선택합니다. 원본 IP 주소가 자동으로 채워집니다.
- 분석 대상으로 공용 도메인 이름/엔드포인트를 선택합니다. 한 가지 예는 다음과 같습니다
mcr.microsoft.com. 대상 IP 주소도 자동으로 채워집니다. - 분석을 실행하고 결과를 위해 최대 2분 동안 기다립니다. 결과 다이어그램에서 연결된 Azure 네트워크 리소스와 트래픽이 차단되는 위치를 식별합니다. 자세한 분석 출력을 보려면 "JSON 출력" 탭을 클릭하거나 다이어그램의 화살표를 클릭합니다.
수동 문제 해결
Azure Virtual Network 검증 도구(미리 보기) 도구가 문제에 대한 충분한 인사이트를 제공하지 않는 경우 SSH(Secure Shell 프로토콜)를 사용하여 노드에 연결하여 아웃바운드 연결 오류를 수동으로 해결할 수 있습니다. 연결을 만들려면 유지 관리 또는 문제 해결을 위해 AKS(Azure Kubernetes Service) 클러스터 노드에 연결의 지침을 따릅니다. 그런 다음, 다음 단계를 수행하여 클러스터의 연결을 테스트합니다.
노드에 연결한 후 다음 명령을
nc실행dig합니다.nc -vz mcr.microsoft.com 443 dig mcr.microsoft.com 443Note
SSH를 통해 노드에 액세스할 수 없는 경우 Virtual Machine Scale Set 인스턴스에 대해 az vmss run-command invoke 명령을 실행하여 아웃바운드 연결을 테스트할 수 있습니다.
# Get the VMSS instance IDs. az vmss list-instances --resource-group <mc-resource-group-name> \ --name <vmss-name> \ --output table # Use an instance ID to test outbound connectivity. az vmss run-command invoke --resource-group <mc-resource-group-name> \ --name <vmss-name> \ --command-id RunShellScript \ --instance-id <vmss-instance-id> \ --output json \ --scripts "nc -vz mcr.microsoft.com 443"HTTP 프록시를 사용하여 AKS 클러스터를 만들려는 경우 노드에 연결한
nc후 ,curl및dig명령을 실행합니다.# Test connectivity to the HTTP proxy server from the AKS node. nc -vz <http-s-proxy-address> <port> # Test traffic from the HTTP proxy server to HTTPS. curl --proxy http://<http-proxy-address>:<port>/ --head https://mcr.microsoft.com # Test traffic from the HTTPS proxy server to HTTPS. curl --proxy https://<https-proxy-address>:<port>/ --head https://mcr.microsoft.com # Test DNS functionality. dig mcr.microsoft.com 443Note
SSH를 통해 노드에 액세스할 수 없는 경우 Virtual Machine Scale Set 인스턴스에 대해 명령을 실행
az vmss run-command invoke하여 아웃바운드 연결을 테스트할 수 있습니다.# Get the VMSS instance IDs. az vmss list-instances --resource-group <mc-resource-group-name> \ --name <vmss-name> \ --output table # Use an instance ID to test connectivity from the HTTP proxy server to HTTPS. az vmss run-command invoke --resource-group <mc-resource-group-name> \ --name <vmss-name> \ --command-id RunShellScript \ --instance-id <vmss-instance-id> \ --output json \ --scripts "curl --proxy http://<http-proxy-address>:<port>/ --head https://mcr.microsoft.com" # Use an instance ID to test connectivity from the HTTPS proxy server to HTTPS. az vmss run-command invoke --resource-group <mc-resource-group-name> \ --name <vmss-name> \ --command-id RunShellScript \ --instance-id <vmss-instance-id> \ --output json \ --scripts "curl --proxy https://<https-proxy-address>:<port>/ --head https://mcr.microsoft.com" # Use an instance ID to test DNS functionality. az vmss run-command invoke --resource-group <mc-resource-group-name> \ --name <vmss-name> \ --command-id RunShellScript \ --instance-id <vmss-instance-id> \ --output json \ --scripts "dig mcr.microsoft.com 443"
Solution
다음 표에서는 트래픽이 차단될 수 있는 특정 이유와 각 이유로 해당하는 솔루션을 나열합니다.
| Issue | Solution |
|---|---|
| 트래픽은 방화벽 규칙, 프록시 서버 또는 NSG(네트워크 보안 그룹)에 의해 차단됩니다. | 이 문제는 AKS 필수 포트 또는 FQDN(정규화된 도메인 이름)이 방화벽, 프록시 서버 또는 NSG에 의해 차단될 때 발생합니다. 이러한 포트 및 FQDN이 허용되는지 확인합니다. 차단된 항목을 확인하려면 이전 원인 섹션에 제공된 연결을 확인합니다. AKS 필수 포트 및 FQDN에 대한 자세한 내용은 AKS(Azure Kubernetes Service) 클러스터에 대한 아웃바운드 네트워크 및 FQDN 규칙을 참조 하세요. |
| AAAA(IPv6) 레코드가 방화벽에서 차단됨 | 방화벽에서 엔드포인트가 Azure DNS에서 확인되지 못하도록 차단하는 항목이 없는지 확인합니다. |
| 프라이빗 클러스터가 내부 Azure 리소스를 확인할 수 없음 | 프라이빗 클러스터에서 사용자 지정 DNS를 사용하는 경우 Azure DNS IP 주소(168.63.129.16)를 업스트림 DNS 서버로 추가해야 합니다. 주소가 DNS 서버에 설정되어 있는지 확인합니다. 자세한 내용은 프라이빗 AKS 클러스터 만들기 및 IP 주소 168.63.129.16이란?을 참조하세요. |
추가 정보
타사 연락처 고지
이 문서에 포함된 타사의 연락처 정보는 이 항목에 대한 추가 정보를 찾는 데 도움을 주기 위한 것입니다. 이 연락처 정보는 공지 없이 변경될 수 있습니다. Microsoft는 타사 연락처 정보의 정확성을 보증하지 않습니다.
도움을 요청하십시오.
질문이 있는 경우 Azure 커뮤니티 지원을 요청할 수 있습니다. Azure 피드백 커뮤니티에 제품 피드백을 제출할 수도 있습니다.