Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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/2024o un'immagine del nodo aggiornata alla versione immagine Windows AKS20240316o a una versione successiva. In alternativa, verificare se la versione di WindowsCSEScriptsPackage è v0.0.39 o successiva, che puoi trovare nei nodi WindowsC:\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.