Partager via


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 version 20240316 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 sur C:\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-akscomme 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.