Partager via


Capturer un vidage TCP à partir d’un nœud Windows dans un cluster AKS

Des problèmes de mise en réseau peuvent se produire lorsque vous utilisez un cluster Microsoft Azure Kubernetes Service (AKS). Pour vous aider à examiner ces problèmes, cet article explique comment capturer un vidage TCP à partir d’un nœud Windows dans un cluster AKS, puis télécharger la capture sur votre ordinateur local.

Conditions préalables

Étape 1 : Rechercher les nœuds à dépanner

Comment déterminer le nœud à partir duquel extraire le vidage TCP ? Vous obtenez d’abord la liste des nœuds du cluster AKS à l’aide du client de ligne de commande Kubernetes, kubectl. Suivez les instructions pour vous connecter au cluster et exécutez la kubectl get nodes --output wide commande à l’aide du Portail Azure ou d’Azure CLI. Une liste de nœuds similaire à la sortie suivante s’affiche :

$ kubectl get nodes --output wide
NAME                                STATUS   ROLES   AGE     VERSION   INTERNAL-IP    EXTERNAL-IP   OS-IMAGE                         KERNEL-VERSION     CONTAINER-RUNTIME
akswin000000                        Ready    agent   3m8s    v1.20.9   10.240.0.4     <none>        Windows Server 2019 Datacenter   10.0.17763.2237    docker://20.10.6
akswin000001                        Ready    agent   3m50s   v1.20.9   10.240.0.115   <none>        Windows Server 2019 Datacenter   10.0.17763.2237    docker://20.10.6
akswin000002                        Ready    agent   3m32s   v1.20.9   10.240.0.226   <none>        Windows Server 2019 Datacenter   10.0.17763.2237    docker://20.10.6

Étape 2 : Se connecter à un nœud Windows

L’étape suivante consiste à établir une connexion au nœud de cluster AKS. Vous vous authentifiez à l’aide d’une clé SSH (Secure Shell) ou à l’aide 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, car 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 des 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 revient à ce qui a été initialement installé sur le cluster pendant les opérations suivantes :

  • Redémarrer
  • Mise à niveau de version
  • Mise à niveau d’image de nœud

Étape 3 : Créer une capture de paquets

Lorsque vous êtes connecté au nœud Windows via SSH ou RDP, un formulaire d’invite de commandes Windows s’affiche :

azureuser@akswin000000 C:\Users\azureuser>

Ouvrez maintenant une invite de commandes et entrez la commande Network Shell (netsh) ci-dessous pour capturer les traces (netsh trace start). Cette commande démarre le processus de capture de paquets.

netsh trace start capture=yes tracefile=C:\Users\azureuser\AKS_node_name.etl 

Une sortie semblable au texte suivant s’affiche :

Trace configuration:
-------------------------------------------------------------------
Status:             Running
Trace File:         AKS_node_name.etl
Append:             Off
Circular:           On
Max Size:           250 MB
Report:             Off

Pendant l’exécution de la trace, répliquez votre problème plusieurs fois. Cette action garantit que le problème a été capturé dans le vidage TCP. Notez l’horodatage pendant que vous répliquez le problème. Pour arrêter la capture de paquets lorsque vous avez terminé, entrez netsh trace stop:

azureuser@akswin000000 C:\Users\azureuser>netsh trace stop
Merging traces ... done
Generating data collection ... done
The trace file and additional troubleshooting information have been compiled as "C:\Users\azureuser\AKS_node_name.cab".
File location = C:\Users\azureuser\AKS_node_name.etl
Tracing session was successfully stopped.

Étape 4 : Transférer la capture localement

Une fois la capture de paquets terminée, identifiez le pod d’assistance afin de pouvoir copier le vidage localement. Ouvrez une deuxième console, puis obtenez une liste de pods en exécutant kubectl get pods, comme indiqué ci-dessous.

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 de node-debugger-aks, comme indiqué dans la troisième ligne. Remplacez le nom du pod, puis exécutez les commandes de copie sécurisée (scp) suivantes. Ces commandes récupèrent les fichiers journaux de suivi des événements (.etl) et archive (.cab), qui sont générés pour la capture de paquets.

scp -o 'ProxyCommand ssh -p 2022 -W %h:%p azureuser@127.0.0.1' azureuser@10.240.0.97:AKS_node_name.cab .
scp -o 'ProxyCommand ssh -p 2022 -W %h:%p azureuser@127.0.0.1' azureuser@10.240.0.97:AKS_node_name.etl .

Une sortie similaire au texte suivant s’affiche :

$ scp -o 'ProxyCommand ssh -p 2022 -W %h:%p azureuser@127.0.0.1' azureuser@10.240.0.97:AKS_node_name.cab .

Authorized uses only. All activity may be monitored and reported.
AKS_node_name.cab                                                                  100%  571KB 984.0KB/s   00:00

scp -o 'ProxyCommand ssh -p 2022 -W %h:%p azureuser@127.0.0.1' azureuser@10.240.0.97:AKS_node_name.etl .

Authorized uses only. All activity may be monitored and reported.
AKS_node_name.etl                                                                  100% 1536KB   1.3MB/s   00:01

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.