Capturer un fichier de vidage de conteneur Windows à partir d’un nœud Windows dans un cluster AKS
Si un conteneur Windows échoue sur un cluster Microsoft Azure Kubernetes Service (AKS), vous devrez peut-être examiner le fichier de vidage du conteneur Windows pour examiner la cause racine. Cet article fournit des étapes pour capturer un fichier de vidage de conteneur Windows à partir d’un nœud Windows dans un cluster AKS. Il inclut également des instructions pour télécharger le fichier de vidage sur votre ordinateur local pour une analyse plus approfondie.
Prerequisites
Un cluster AKS. Si vous n’avez pas de cluster AKS, créez-en un à l’aide d’Azure CLI ou via le Portail Azure.
Pools d’agents Windows créés après
3/13/2024
ou une image de nœud qui a été mise à niveau vers la version20240316
de l’image Windows AKS ou une version ultérieure. Vous pouvez également vérifier si la version windowsCSEScriptsPackage est v0.0.39 ou ultérieure, qui peut être située surC:\AzureData\CustomDataSetupScript.log
les nœuds Windows.
Étape 1 : Ajouter des métadonnées d’annotations à votre déploiement
Montez un dossier hôte dans le conteneur et ajoutez les métadonnées d’annotations pour demander que le conteneur Windows stocke le fichier de vidage dans un dossier désigné :
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
Étape 2 : Reproduire le problème
Redéployez votre déploiement et attendez que le conteneur Windows échoue. Vous pouvez utiliser kubectl describe pod -n [POD-NAMESPACE] [POD-NAME]
pour savoir quel nœud Windows AKS héberge le pod.
Étape 3 : Se connecter au nœud Windows
Établissez une connexion au nœud de cluster AKS. Vous vous authentifiez à l’aide d’une clé SSH (Secure Shell) ou du mot de passe administrateur Windows dans une connexion RDP (Remote Desktop Protocol). Les deux méthodes nécessitent la création d’une connexion intermédiaire. Cela est dû au fait que vous ne pouvez pas vous connecter directement au nœud Windows AKS. Que vous vous connectiez à un nœud via SSH ou RDP, vous devez spécifier le nom d’utilisateur pour les nœuds AKS. Par défaut, ce nom d’utilisateur est azureuser
.
Si vous disposez d’une clé SSH, créez une connexion SSH au nœud Windows. La clé SSH ne persiste pas sur vos nœuds AKS. La clé SSH rétablit ce qui a été initialement installé sur le cluster pendant l’une des actions suivantes :
- Restart
- Mise à niveau de version
- Mise à niveau d’image de nœud
Étape 4 : Transférer le fichier de vidage localement
Une fois le conteneur défaillant, identifiez le pod d’assistance pour pouvoir copier le fichier de vidage localement. Ouvrez une deuxième console, puis obtenez une liste de pods en exécutant la kubectl get pods
commande, comme suit :
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
Le pod d’assistance a un préfixe , node-debugger-aks
comme indiqué dans la troisième ligne. Remplacez le nom du pod, puis exécutez les commandes scp (Secure Copy) suivantes pour récupérer les fichiers de vidage (.dmp) enregistrés lorsque le conteneur échoue :
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 .
Vous pouvez répertorier le C:\k\containerdumps
dossier pour trouver le chemin complet des fichiers de vidage une fois la connexion établie au nœud Windows.
Contactez-nous pour obtenir de l’aide
Pour toute demande ou assistance, créez une demande de support ou posez une question au support de la communauté Azure. Vous pouvez également soumettre des commentaires sur les produits à la communauté de commentaires Azure.