다음을 통해 공유


가상 네트워크 외부의 엔드포인트에 대한 연결 문제 해결

이 문서에서는 AKS(Microsoft Azure Kubernetes Service) 클러스터에서 가상 네트워크 외부(즉, 공용 인터넷을 통해)에 대한 연결 문제를 해결하는 방법을 설명합니다.

필수 조건

  • Azure CLI

  • 클라이언트 URL(curl) 도구입니다.

  • Kubernetes kubectl 도구 또는 클러스터에 연결할 유사한 도구입니다. Azure CLI를 사용하여 kubectl을 설치하려면 az aks install-cli 명령을 실행합니다.

문제 해결 검사 목록

문제가 영구적입니까?

1단계: 기본 문제 해결 수행

인터넷의 퍼블릭 엔드포인트에 연결할 수 있는지 확인합니다. 지침은 아웃바운드 AKS 클러스터 연결의 기본 문제 해결을 참조 하세요.

2단계: AKS 클러스터에 대한 아웃바운드 형식 확인

AKS 클러스터의 아웃바운드 형식을 식별하려면 az aks show 명령을 실행합니다.

az aks show --resource-group <resource_group> --name <cluster_name> --query "networkProfile.outboundType"

아웃바운드 형식이loadBalancer면 kubenet 네트워크를 사용하지 않는 한 경로 테이블이 없습니다. kubenet을 사용하는 경우 기본 경로 테이블에 아웃바운드 인터넷 연결을 차단하는 추가 구성이 없는지 확인합니다. Azure CNI, 동적 할당 또는 Azure CNI 오버레이와 같은 다른 네트워크를 사용하는 경우 기본적으로 경로 테이블이 만들어지지 않습니다. 이 경우 NSG(네트워크 보안 그룹)에 아웃바운드 인터넷 연결을 차단하는 사용자 지정 구성이 없는지 확인합니다.

아웃바운드 형식이 userDefinedRouting면 다음 조건이 충족되는지 확인합니다.

  • 송신 디바이스(방화벽 또는 프록시)에 연결할 수 있습니다.

  • 송신 디바이스는 클러스터에서 필요한 아웃바운드 트래픽 을 허용합니다.

    AKS 클러스터에 허용되는 FQDN 목록을 얻으려면 az aks egress-endpoints list 명령을 실행합니다.

    az aks egress-endpoints list --resource-group <resource_group> --name <cluster_name>
    

아웃바운드 형식이managedNATGateway면 az network nat gateway show 명령을 실행하여 AKS 서브넷이 NAT 게이트웨이와 연결되어 있는지 확인합니다.

az network nat gateway show --resource-group <resource_group> --name <nat_gateway_name> --query "subnets[].id"

AKS와 함께 NAT 게이트웨이를 사용하는 방법에 대한 자세한 내용은 관리되는 NAT 게이트웨이를 참조하세요.

3단계: 애플리케이션 Pod에 연결할 때 curl 출력 검사

curl 응답 코드는 문제 유형을 식별하는 데 도움이 될 수 있습니다. 응답 코드를 사용할 수 있게 되면 문제가 어떻게 동작하는지 더 잘 이해해 보세요. HTTP 상태 코드 및 문제의 기본 동작에 대한 자세한 내용은 다음 표를 참조하세요.

정보 원본 링크
IANA(Internet Assigned Numbers Authority) HTTP(Hypertext Transfer Protocol) 상태 코드 레지스트리
Mozilla HTTP 응답 상태 코드
Wikipedia HTTP 상태 코드 목록

다음 HTTP 상태 코드는 나열된 문제를 나타낼 수 있습니다.

HTTP 상태 코드 문제 예시
4xx
  1. 문제는 클라이언트 요청에 영향을 줍니다.
  2. 클라이언트와 서버 사이에 네트워크 차단기가 있습니다.
  1. 요청된 페이지가 없거나 클라이언트에 페이지에 액세스할 수 있는 권한이 없습니다.
  2. 트래픽이 네트워크 보안 그룹 또는 방화벽에 의해 차단되고 있습니다.
5xx 문제가 서버에 영향을 줍니다. 애플리케이션이 다운되거나 게이트웨이가 작동하지 않습니다.

curl을 사용하여 애플리케이션 엔드포인트에 연결하려고 할 수 있습니다. 다음은 명령 및 출력 예제입니다.

# 404 error code example
$ curl -vv <host IP address>/test.index

*   Trying <host IP address>:80...
* TCP_NODELAY set
* Connected to <host IP address> (<host IP address>) port 80 (#0)
> GET /test.index HTTP/1.1
> Host: <host IP address>
> User-Agent: curl/7.68.0
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 404 Not Found
...
* Connection #0 to host <host IP address> left intact

4단계: 아웃바운드 트래픽이 가상 어플라이언스를 일시적으로 우회하는 경우 어떻게 되는지 확인합니다.

송신 디바이스(가상 어플라이언스)가 문제를 일으키는지 여부를 확인하는 빠른 테스트를 위해 모든 트래픽이 인터넷을 통해 이동하도록 일시적으로 허용할 수 있습니다. 이 설정을 구성하려면 가상 어플라이언스의 기본 IP 주소 및 포트 경로를 0.0.0.0/0 변경하여 인터넷을 대신 통과할 수 있습니다.

가상 어플라이언스를 무시할 때 송신 디바이스가 제대로 작동하는 경우 가상 어플라이언스의 로그를 확인하여 거부된 패킷을 확인하고 그에 따라 가상 어플라이언스에 허용 규칙을 추가합니다.

문제가 일시적인가요?

여러 가지 이유로 일시적인 아웃바운드 문제가 발생할 수 있습니다. 일시적인 아웃바운드 연결 문제를 해결하려면 다음 단계를 수행합니다.

1단계: Pod 또는 노드 리소스가 소진되었는지 확인

다음 명령을 실행하여 사용되는 리소스의 양을 확인합니다.

kubectl top pods
kubectl top nodes

2단계: 운영 체제 디스크가 많이 사용되는지 확인

운영 체제 디스크가 많이 사용되는지 확인하려면 다음 단계를 수행합니다.

  1. Azure Portal에서 가상 머신 확장 집합을 검색하고 선택합니다.

  2. 확장 집합 목록에서 AKS 클러스터에 사용되는 확장 집합을 선택합니다.

  3. 확장 집합 탐색 창에서 모니터링 섹션으로 이동한 다음 메트릭을 선택합니다.

  4. 다음 필드를 찾아 메트릭 섹션에서 확장 집합 에 대한 디스크 메트릭 을 봅니다.

    필드
    범위 VMSS 이름
    메트릭 네임스페이스 가상 머신 호스트
    메트릭 OS 및 데이터 디스크 메트릭

메트릭에 대한 자세한 내용은 OS 디스크 및 데이터 디스크 메트릭을 참조 하세요.

디스크 사용률에 대한 AKS 권장 사항을 보려면 다음 단계를 수행합니다.

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

  2. Kubernetes 서비스 목록에서 AKS 클러스터의 이름을 선택합니다.

  3. AKS 클러스터 탐색 창에서 모니터링 섹션으로 이동한 다음 Advisor 권장 사항을 선택합니다.

  4. 디스크 사용량에 대한 나열된 권장 사항을 검토합니다.

OS 디스크를 많이 사용하는 경우 다음 구제 방법을 사용하는 것이 좋습니다.

이러한 해결 방법으로 문제가 해결되지 않으면 디스크에서 많은 읽기/쓰기 작업을 수행하는 프로세스를 분석합니다. 그런 다음 OS 디스크 대신 데이터 디스크로 작업을 이동할 수 있는지 확인합니다.

3단계: 원본 네트워크 주소 변환 포트가 소진되었는지 확인

애플리케이션이 많은 아웃바운드 연결을 만드는 경우 아웃바운드 디바이스의 IP 주소에서 사용 가능한 포트 수를 소진할 수 있습니다. 메트릭, 경고 및 리소스 상태와 함께 표준 부하 분산 장치 진단에 따라 기존 부하 분산 장치의 SNAT(원본 네트워크 주소 변환) 포트사용 및 할당을 모니터링합니다. 모니터링하여 SNAT 포트 고갈의 위험을 확인하거나 확인합니다.

할당된 SNAT 포트의 최대 수에 도달하거나 초과하고 있나요? 이 경우 애플리케이션을 확인하여 기존 연결을 다시 사용하는지 여부를 확인할 수 있습니다. 자세한 내용은 연결을 효율적으로 사용하도록 애플리케이션 디자인을 참조하세요.

애플리케이션이 올바르게 구성되어 있고 할당된 기본 포트 수보다 더 많은 SNAT 포트가 필요한 경우 다음 단계를 수행합니다.

  1. 송신 디바이스의 공용 IP 수를 늘립니다. 송신 디바이스가 부하 분산 장치인 경우 부하 분산 장치에서 공용 IP 주소의 수를 늘립니다.

  2. AKS 작업자 노드의 노드당 포트를 늘립니다.

타사 연락처 고지

이 문서에 포함된 타사의 연락처 정보는 이 항목에 대한 추가 정보를 찾는 데 도움을 주기 위한 것입니다. 이 연락처 정보는 공지 없이 변경될 수 있습니다. Microsoft는 타사 연락처 정보의 정확성을 보증하지 않습니다.

도움을 요청하십시오.

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