Dela via


Samla in en Windows-containerdumpfil från en Windows-nod i ett AKS-kluster

Om en Windows-container misslyckas i ett Microsoft Azure Kubernetes Service-kluster (AKS) kan du behöva undersöka Windows-containerdumpfilen för att undersöka rotorsaken. Den här artikeln innehåller steg för att samla in en Windows-containerdumpfil från en Windows-nod i ett AKS-kluster. Den innehåller också instruktioner för att ladda ned dumpfilen till din lokala dator för ytterligare analys.

Förutsättningar

  • Ett AKS-kluster. Om du inte har ett AKS-kluster skapar du ett med hjälp av Azure CLI eller via Azure Portal.

  • Windows-agentpooler som skapas efter 3/13/2024 eller en nodbild som har uppgraderats till AKS Windows-avbildningsversion 20240316 eller en senare version. Alternativt kan du kontrollera om WindowsCSEScriptsPackage-versionen är v0.0.39 eller senare, som kan finnas i C:\AzureData\CustomDataSetupScript.log på Windows-noderna.

Steg 1: Lägga till anteckningsmetadata i distributionen

Montera en värdmapp i containern och lägg till anteckningarnas metadata för att begära att Windows-containern lagrar dumpfilen i en angiven mapp:

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

Steg 2: Återskapa problemet

Distribuera om distributionen och vänta tills Windows-containern misslyckas. Du kan använda kubectl describe pod -n [POD-NAMESPACE] [POD-NAME] för att lära dig vilken AKS Windows-nod som är värd för podden.

Steg 3: Anslut till Windows-noden

Upprätta en anslutning till AKS-klusternoden. Du autentiserar antingen med hjälp av en SSH-nyckel (Secure Shell) eller Windows-administratörslösenordet i en RDP-anslutning (Remote Desktop Protocol). Båda metoderna kräver att du skapar en mellanliggande anslutning. Det beror på att du för närvarande inte kan ansluta direkt till AKS Windows-noden. Oavsett om du ansluter till en nod via SSH eller RDP måste du ange användarnamnet för AKS-noderna. Som standard är azureuserdet här användarnamnet .

Om du har en SSH-nyckel skapar du en SSH-anslutning till Windows-noden. SSH-nyckeln finns inte kvar på dina AKS-noder. SSH-nyckeln återgår till det som ursprungligen installerades på klustret under någon av följande åtgärder:

  • Starta om
  • Versionsuppgradering
  • Uppgradering av nodbild

Steg 4: Överför dumpfilen lokalt

När containern misslyckas identifierar du hjälppodden så att du kan kopiera dumpfilen lokalt. Öppna en andra konsol och hämta sedan en lista över poddar genom att köra kubectl get pods kommandot på följande sätt:

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

Hjälppodden har prefixet node-debugger-aks, som visas på den tredje raden. Ersätt poddnamnet och kör sedan följande scp-kommandon (Secure Copy) för att hämta dumpfilerna (.dmp) som sparas när containern misslyckas:

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 .

Du kan lista C:\k\containerdumps mappen för att hitta den fullständiga sökvägen till dumpfilerna när anslutningen har upprättats till Windows-noden.

Kontakta oss för att få hjälp

Om du har frågor eller behöver hjälp skapar du en supportförfrågan eller frågar Azure community support. Du kan också skicka produktfeedback till Azure-feedbackcommunityn.