다음을 통해 공유


AKS 클러스터의 Windows 노드에서 TCP 덤프 캡처

AKS(Microsoft Azure Kubernetes Service) 클러스터를 사용하는 경우 네트워킹 문제가 발생할 수 있습니다. 이러한 문제를 조사하기 위해 이 문서에서는 AKS 클러스터의 Windows 노드에서 TCP 덤프를 캡처한 다음 캡처를 로컬 컴퓨터에 다운로드하는 방법을 설명합니다.

필수 구성 요소

1단계: 문제를 해결할 노드 찾기

TCP 덤프를 끌어올 노드를 어떻게 결정합니까? 먼저 Kubernetes 명령줄 클라이언트 kubectl을 사용하여 AKS 클러스터의 노드 목록을 가져옵니다. 지침에 따라 클러스터에 연결하고 Azure Portal 또는 Azure CLI를 사용하여 명령을 실행 kubectl get nodes --output wide 합니다. 다음 출력과 유사한 노드 목록이 나타납니다.

$ kubectl get nodes --output wide
NAME                                STATUS   ROLES   AGE     VERSION   INTERNAL-IP    EXTERNAL-IP   OS-IMAGE                         KERNEL-VERSION     CONTAINER-RUNTIME
akswin000000                        Ready    agent   3m8s    v1.20.9   10.240.0.4     <none>        Windows Server 2019 Datacenter   10.0.17763.2237    docker://20.10.6
akswin000001                        Ready    agent   3m50s   v1.20.9   10.240.0.115   <none>        Windows Server 2019 Datacenter   10.0.17763.2237    docker://20.10.6
akswin000002                        Ready    agent   3m32s   v1.20.9   10.240.0.226   <none>        Windows Server 2019 Datacenter   10.0.17763.2237    docker://20.10.6

2단계: Windows 노드에 연결

다음 단계는 AKS 클러스터 노드에 대한 연결을 설정하는 것입니다. SSH(Secure Shell) 키를 사용하거나 RDP(원격 데스크톱 프로토콜) 연결에서 Windows 관리자 암호를 사용하여 인증합니다. 현재 AKS Windows 노드에 직접 연결할 수 없으므로 두 방법 모두 중간 연결을 만들어야 합니다. SSH 또는 RDP를 통해 노드에 연결하든 AKS 노드의 사용자 이름을 지정해야 합니다. 기본적으로 이 사용자 이름은 azureuser입니다.

SSH 키가 있는 경우 Windows 노드에 대한 SSH 연결을 만듭니다. SSH 키는 AKS 노드에서 유지되지 않습니다. SSH 키는 다음 중 클러스터에 처음 설치된 키로 되돌아갑니다.

  • 재부팅
  • 버전 업그레이드
  • 노드 이미지 업그레이드

3단계: 패킷 캡처 만들기

SSH 또는 RDP를 통해 Windows 노드에 연결되면 Windows 명령 프롬프트의 형태가 나타납니다.

azureuser@akswin000000 C:\Users\azureuser>

이제 명령 프롬프트를 열고 추적 캡처(netsh 추적 시작)를 위해 아래의 네트워크 셸(netsh) 명령을 입력합니다. 이 명령은 패킷 캡처 프로세스를 시작합니다.

netsh trace start capture=yes tracefile=C:\Users\azureuser\AKS_node_name.etl 

출력은 다음 텍스트와 유사하게 표시됩니다.

Trace configuration:
-------------------------------------------------------------------
Status:             Running
Trace File:         AKS_node_name.etl
Append:             Off
Circular:           On
Max Size:           250 MB
Report:             Off

추적이 실행되는 동안 문제를 여러 번 복제합니다. 이 작업을 수행하면 TCP 덤프 내에서 문제가 캡처됩니다. 문제를 복제하는 동안 타임스탬프를 확인합니다. 완료되면 패킷 캡처를 중지하려면 를 입력합니다 netsh trace stop.

azureuser@akswin000000 C:\Users\azureuser>netsh trace stop
Merging traces ... done
Generating data collection ... done
The trace file and additional troubleshooting information have been compiled as "C:\Users\azureuser\AKS_node_name.cab".
File location = C:\Users\azureuser\AKS_node_name.etl
Tracing session was successfully stopped.

4단계: 캡처를 로컬로 전송

패킷 캡처를 완료한 후 로컬로 덤프를 복사할 수 있도록 도우미 Pod를 식별합니다. 두 번째 콘솔을 연 다음 아래와 같이 를 실행 kubectl get pods하여 Pod 목록을 가져옵니다.

kubectl get pods
NAME                                                    READY   STATUS    RESTARTS   AGE
azure-vote-back-6c4dd64bdf-m4nk7                        1/1     Running   2          3d21h
azure-vote-front-85b4df594d-jhpzw                       1/1     Running   2          3d21h
node-debugger-aks-nodepool1-38878740-vmss000000-6ztp6   1/1     Running   0          3m58s

도우미 Pod의 접두 node-debugger-aks사는 세 번째 행에 표시된 것처럼 입니다. Pod 이름을 바꾼 다음 다음 scp(보안 복사) 명령을 실행합니다. 이러한 명령은 패킷 캡처를 위해 생성된 이벤트 추적 로그(.etl) 및 보관(.cab) 파일을 검색합니다.

scp -o 'ProxyCommand ssh -p 2022 -W %h:%p azureuser@127.0.0.1' azureuser@10.240.0.97:AKS_node_name.cab .
scp -o 'ProxyCommand ssh -p 2022 -W %h:%p azureuser@127.0.0.1' azureuser@10.240.0.97:AKS_node_name.etl .

다음 텍스트와 유사한 출력이 나타납니다.

$ scp -o 'ProxyCommand ssh -p 2022 -W %h:%p azureuser@127.0.0.1' azureuser@10.240.0.97:AKS_node_name.cab .

Authorized uses only. All activity may be monitored and reported.
AKS_node_name.cab                                                                  100%  571KB 984.0KB/s   00:00

scp -o 'ProxyCommand ssh -p 2022 -W %h:%p azureuser@127.0.0.1' azureuser@10.240.0.97:AKS_node_name.etl .

Authorized uses only. All activity may be monitored and reported.
AKS_node_name.etl                                                                  100% 1536KB   1.3MB/s   00:01

도움을 요청하십시오.

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