Capturer un vidage TCP à partir d’un nœud Linux 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 Linux dans un cluster AKS, puis télécharger la capture sur votre ordinateur local.
Conditions préalables
- Outil Kubernetes kubectl . Pour installer kubectl à l’aide d’Azure CLI, exécutez la commande az aks install-cli .
- 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.
- Outil en ligne de commande tcpdump installé sur le nœud Linux.
Remarque
Vous pouvez automatiser la capture TCP via un graphique Helm, qui peut s’exécuter en arrière-plan sous la forme d’un DaemonSet. Pour plus d’informations, consultez cet outil GitHub personnalisé pour capturer les vidages TCP ou suivez les étapes décrites dans les sections suivantes.
É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
aks-agentpool-34796016-vmss000000 Ready agent 45h v1.20.9 10.240.1.81 <none> Ubuntu 18.04.6 LTS 5.4.0-1062-azure containerd://1.4.9+azure
aks-agentpool-34796016-vmss000002 Ready agent 45h v1.20.9 10.240.2.47 <none> Ubuntu 18.04.6 LTS 5.4.0-1062-azure containerd://1.4.9+azure
Étape 2 : Se connecter à un nœud Linux
L’étape suivante consiste à établir une connexion au nœud de cluster AKS à partir duquel vous souhaitez capturer la trace réseau. Pour plus d’informations, consultez Créer une connexion shell interactive à un nœud Linux.
Étape 3 : Vérifier que tcpdump est installé
Une fois que vous avez établi une connexion au nœud Linux AKS, vérifiez que l’outil tcpdump a été installé sur un nœud en exécutant tcpdump --version
. Si tcpdump n’a pas été installé, le texte d’erreur suivant s’affiche :
# tcpdump --version
bash: tcpdump: command not found
Ensuite, installez tcpdump sur votre pod en exécutant l’utilitaire de gestion de package avancé de l’outil de package avancé, apt-get :
apt-get update && apt-get install tcpdump
Si tcpdump est installé, quelque chose de similaire au texte suivant s’affiche :
# tcpdump --version
tcpdump version 4.9.3
libpcap version 1.8.1
OpenSSL 1.1.1 11 Sep 2018
Étape 4 : Créer une capture de paquets
Pour capturer le vidage, exécutez la commande tcpdump comme suit :
# tcpdump --snapshot-length=0 -vvv -w /capture.cap
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
Got 6
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é, appuyez sur Ctrl+C :
# tcpdump -s 0 -vvv -w /capture.cap
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
^C526 packets captured
526 packets received by filter
0 packets dropped by kernel
Étape 5 : 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 0 3m29s
azure-vote-front-85b4df594d-jhpzw 1/1 Running 0 3m29s
node-debugger-aks-nodepool1-38878740-vmss000000-jfsq2 1/1 Running 0 60s
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 la commande kubectl suivante. Ces commandes récupèrent la capture de paquets pour votre nœud Linux.
kubectl cp node-debugger-aks-nodepool1-38878740-vmss000000-jfsq2:/capture.cap capture.cap
Exclusion de responsabilité de tiers
Les produits tiers mentionnés dans le présent article sont fabriqués par des sociétés indépendantes de Microsoft. Microsoft exclut toute garantie, implicite ou autre, concernant les performances ou la fiabilité de ces produits.
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.
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : pendant toute l’année 2024, nous allons éliminer progressivement Problèmes GitHub comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, voir :Soumettre et afficher des commentaires pour