다음을 통해 공유


AKS 클러스터의 Windows 노드에서 Windows 컨테이너 덤프 파일 캡처

AKS(Microsoft Azure Kubernetes Service) 클러스터에서 Windows 컨테이너가 실패하는 경우 Windows 컨테이너 덤프 파일을 검사하여 근본 원인을 조사해야 할 수 있습니다. 이 문서에서는 AKS 클러스터의 Windows 노드에서 Windows 컨테이너 덤프 파일을 캡처하는 단계를 제공합니다. 또한 추가 분석을 위해 덤프 파일을 로컬 컴퓨터에 다운로드하는 지침도 포함되어 있습니다.

필수 구성 요소

  • AKS 클러스터. AKS 클러스터가 없는 경우 Azure CLI를 사용하거나 Azure Portal 통해 클러스터를 만듭니다.

  • 이후에 3/13/2024 만든 Windows 에이전트 풀 또는 AKS Windows 이미지 버전 또는 이후 버전 20240316 으로 업그레이드된 노드 이미지. 또는 WindowsCSEScriptsPackage 버전이 windows 노드에 있는 C:\AzureData\CustomDataSetupScript.log v0.0.39 이상인지 확인합니다.

1단계: 배포에 주석 메타데이터 추가

컨테이너에 호스트 폴더를 탑재하고 Windows 컨테이너가 지정된 폴더에 덤프 파일을 저장하도록 요청하기 위해 주석 메타데이터를 추가합니다.

metadata:
  ...
  annotations:
    "io.microsoft.container.processdumplocation": "C:\\CrashDumps\\{container_id}"
    "io.microsoft.wcow.processdumptype": "mini"
    "io.microsoft.wcow.processdumpcount": "10"
spec:
  ...
  containers:
  - name: containername
    image: ...
    ...
    volumeMounts:
      - mountPath: C:\CrashDumps
        name: local-dumps
  volumes:
  - name: local-dumps
    hostPath:
      path: C:\k\containerdumps
      type: DirectoryOrCreate

2단계: 문제 재현

배포를 다시 배포하고 Windows 컨테이너가 실패할 때까지 기다립니다. 를 사용하여 kubectl describe pod -n [POD-NAMESPACE] [POD-NAME] Pod를 호스팅하는 AKS Windows 노드를 알아볼 수 있습니다.

3단계: Windows 노드에 연결

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

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

  • 다시 시작
  • 버전 업그레이드
  • 노드 이미지 업그레이드

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(Secure Copy) 명령을 실행하여 컨테이너가 실패할 때 저장된 덤프 파일(.dmp)을 검색합니다.

scp -o 'ProxyCommand ssh -p 2022 -W %h:%p azureuser@127.0.0.1' azureuser@10.240.0.97:/C:/k/containerdumps/{container_id}/{application}.dmp .

Windows 노드에 연결한 C:\k\containerdumps 후 폴더를 나열하여 덤프 파일의 전체 경로를 찾을 수 있습니다.

도움을 요청하십시오.

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