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

Se un contenitore Windows ha esito negativo in un cluster microsoft servizio Azure Kubernetes (servizio Azure Kubernetes), potrebbe essere necessario esaminare il file di dump del contenitore di Windows per analizzare la causa radice. Questo articolo illustra i passaggi per acquisire un file di dump del contenitore Windows da un nodo Windows in un cluster del servizio Azure Kubernetes. Include anche istruzioni per scaricare il file di dump nel computer locale per un'ulteriore analisi.

Prerequisiti

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

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

Passaggio 1: Aggiungere metadati delle annotazioni alla distribuzione

Montare una cartella host nel contenitore e aggiungere i metadati delle annotazioni per richiedere che il contenitore di Windows archivi 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

Ridistribuire la distribuzione e attendere l'esito negativo del contenitore Windows. È possibile usare kubectl describe pod -n [POD-NAMESPACE] [POD-NAME] per scoprire quale nodo windows del servizio Azure Kubernetes ospita il pod.

Passaggio 3: Connettersi al nodo Windows

Stabilire una connessione al nodo del cluster del servizio Azure Kubernetes. L'autenticazione viene eseguita 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. Ciò è dovuto al fatto che attualmente non è possibile connettersi direttamente al nodo Windows del servizio Azure Kubernetes. Sia 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 viene mantenuta nei nodi del servizio Azure Kubernetes. La chiave SSH ripristina ciò che è stato installato inizialmente nel cluster durante una delle azioni seguenti:

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

Passaggio 4: Trasferire il file di dump in locale

Dopo l'errore del contenitore, 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 il prefisso node-debugger-aks, come illustrato nella terza riga. Sostituire il nome del pod ed eseguire i comandi di copia sicura (scp) seguenti per recuperare i file di dump (.dmp) salvati quando il contenitore ha esito negativo:

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.

Contattaci per ricevere assistenza

In caso di domande o bisogno di assistenza, creare una richiesta di supporto tecnico oppure formula una domanda nel Supporto della community di Azure. È possibile anche inviare un feedback sul prodotto al feedback della community di Azure.