Acquisire un file di dump del contenitore Di Windows da un nodo Windows in un cluster del servizio Azure Kubernetes

Sommario

Se un contenitore Windows non riesce in un cluster del servizio Kubernetes di Azure, potrebbe essere necessario esaminare il file di dump del contenitore Windows per analizzare la causa principale. Questo articolo illustra la procedura per acquisire un file di dump del contenitore di Windows da un nodo Windows in un cluster di Azure Kubernetes Service. Include anche istruzioni per scaricare il file di dump nel computer locale per ulteriori analisi.

Prerequisiti

  • Un cluster AKS. Se non si dispone di un cluster AKS, crearne uno usando l'interfaccia della riga di comando di Azure o tramite il portale Azure.

  • Pool di agenti Windows creati dopo 3/13/2024 o un'immagine del nodo aggiornata alla versione immagine Windows AKS 20240316 o a una versione successiva. In alternativa, verificare se la versione di WindowsCSEScriptsPackage è v0.0.39 o successiva, che puoi trovare nei nodi Windows C:\AzureData\CustomDataSetupScript.log.

Passaggio 1: Aggiungere metadati di annotazioni alla distribuzione

Montare una cartella host nel contenitore e aggiungere i metadati delle annotazioni per richiedere che il contenitore di Windows archivii il file di dump in una cartella designata:

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

Passaggio 2: Riprodurre il problema

Ridispiega la distribuzione e attendi che il contenitore di Windows fallisca. Usare kubectl describe pod -n [POD-NAMESPACE] [POD-NAME] per imparare quale nodo AKS Windows sta ospitando il pod.

Passaggio 3: Connettersi al nodo Windows

Connetti al nodo del cluster AKS. Eseguire l'autenticazione usando una chiave SSH (Secure Shell) o la password di amministratore di Windows in una connessione RDP (Remote Desktop Protocol). Entrambi i metodi richiedono la creazione di una connessione intermedia. Questo requisito esiste perché non è attualmente possibile connettersi direttamente al nodo Windows del servizio Azure Kubernetes. Indipendentemente dal fatto che ci si connetta a un nodo tramite SSH o RDP, è necessario specificare il nome utente per i nodi del servizio Azure Kubernetes. Per impostazione predefinita, questo nome utente è azureuser.

Se si dispone di una chiave SSH, creare una connessione SSH al nodo Windows. La chiave SSH non persiste sui nodi AKS. La chiave SSH viene ripristinata a ciò che è stato inizialmente installato nel cluster durante una delle azioni seguenti:

  • Riavviare
  • Aggiornamento della versione
  • Aggiornamento dell'immagine del nodo

Passaggio 4: Trasferire il file di dump in locale

Dopo che il contenitore ha esito negativo, identificare il pod helper in modo che sia possibile copiare il file di dump in locale. Aprire una seconda console e quindi ottenere un elenco di pod eseguendo il kubectl get pods comando , come indicato di seguito:

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

Il pod helper ha un prefisso di node-debugger-aks, come illustrato nella terza riga. Sostituire il nome del pod e quindi eseguire i comandi di copia sicura (scp) seguenti per recuperare i file di dump (.dmp) salvati quando il contenitore non riesce:

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 .

È possibile elencare la C:\k\containerdumps cartella per trovare il percorso completo dei file di dump dopo la connessione al nodo Windows.