Aidez à améliorer cette page
Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Pour contribuer à ce guide de l'utilisateur, cliquez sur le GitHub lien Modifier cette page sur qui se trouve dans le volet droit de chaque page.
Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Capturez le trafic réseau sur un nœud géré à l'aide de kubectl et S3
Découvrez comment capturer le trafic réseau sur un nœud géré par Amazon EKS doté de l'agent de surveillance des nœuds. L'agent exécute tcpdump sur le nœud, compresse les fichiers de capture et les télécharge dans votre compartiment S3.
Conditions préalables
Vérifiez que vous avez les éléments suivants :
-
Un cluster Amazon EKS Auto Mode existant avec l'agent de surveillance des nœuds. Pour de plus amples informations, veuillez consulter Détectez les problèmes de santé des nœuds et activez la réparation automatique des nœuds.
-
L’outil en ligne de commande
kubectlinstallé et configuré pour communiquer avec votre cluster. -
La AWS CLI s'est installée et s'est connectée avec des autorisations suffisantes pour créer des compartiments et des objets S3.
-
Une version récente de Python 3 est installée.
-
Le AWS SDK pour Python 3, Boto 3, est installé.
-
La bibliothèque PyYAML installée ().
pip install pyyaml
Étape 1 : créer un compartiment S3 de destination (facultatif)
Si vous ne possédez pas encore de compartiment S3 pour stocker les fichiers de capture, créez-en un. Remplacez bucket-name et region par vos valeurs.
aws s3api create-bucket --bucket<bucket-name>\ --region<region>\ --create-bucket-configuration LocationConstraint=<region>
Note
Le --create-bucket-configuration paramètre est obligatoire pour toutes les régions saufus-east-1.
Étape 2 : démarrer la capture des paquets
Utilisez le start-capture.py script du référentiel de l'agent de surveillance des nœudstools/start-capture.py) pour générer des informations d'identification S3 pré-signées, créer la NodeDiagnostic ressource et l'appliquer à votre cluster.
-
Identifiez le nœud à partir duquel vous souhaitez capturer le trafic.
kubectl get nodes -
Enregistrez le script start-capture.py
depuis le référentiel de l'agent de surveillance des nœuds sur votre machine locale, puis exécutez-le. Remplacez <bucket-name>et<node-name>par vos valeurs.python3 start-capture.py --bucket<bucket-name>--node<node-name>Options courantes :
# Capture for 5 minutes on eth0 with a filter python3 start-capture.py --bucket<bucket-name>--node<node-name>\ --duration 5m --interface eth0 --filter "tcp port 443" # Preview the YAML without applying python3 start-capture.py --bucket<bucket-name>--node<node-name>--dry-runLe script nécessite Python 3
pyyamlinstalléboto3etkubectlconfiguré pour votre cluster.Le script génère une
NodeDiagnosticressource semblable à la suivante. Cet exemple est fourni à titre de référence ; notez que lesuploadchamps nécessitent des informations d'identification S3 POST pré-signées qui sont générées par programmation par le script.apiVersion: eks.amazonaws.com/v1alpha1 kind: NodeDiagnostic metadata: name:<node-name># Required: node instance ID spec: packetCapture: duration: "30s" # Required: capture duration (max 1h) # interface: "eth0" # Optional: default is primary ENI. Use "any" for all interfaces # filter: "tcp port 443" # Optional: tcpdump filter expression # chunkSizeMB: 10 # Optional: file rotation size in MB (1-100, default: 10) upload: # Required: pre-signed S3 POST credentials url: "https://<bucket>.s3.amazonaws.com/" fields: key: "captures/<node-name>/${filename}" # ... other pre-signed POST fields (generated by the script)
Étape 3 : Surveiller la progression de la capture
Vérifiez l'état de la capture.
kubectl describe nodediagnostic<node-name>
Le statut indiquera :
-
Runningpendant que la capture est en cours. -
Completedavec raisonSuccesslorsque la capture est terminée et que tous les fichiers sont téléchargés. -
Completedavec raisonFailuresi la capture a rencontré des erreurs.
Pour voir l'état complet, y compris captureID (utilisé pour l'identification du chemin S3) :
kubectl get nodediagnostic<node-name>-o jsonpath='{.status.captureStatuses}'
Étape 4 : Téléchargez les fichiers de capture depuis S3
Une fois le statut affichéSuccess, téléchargez les fichiers de capture depuis S3.
aws s3 cp s3://<bucket-name>/captures/ ./captures/ --recursive
Les fichiers sont au format pcap compressé par gzip. Décompressez et analysez avec tcpdump ou Wireshark :
gunzip captures/*.gz tcpdump -r captures/capture.pcap0000 -n
Étape 5 : nettoyer
NodeDiagnosticles ressources ne sont pas automatiquement supprimées. Nettoyez une fois que vous avez obtenu vos fichiers de capture. La suppression de la ressource alors qu'une capture est en cours d'exécution arrête immédiatement la capture.
kubectl delete nodediagnostic<node-name>
Options de configuration et comportement
Pour la référence complète des packetCapture spécifications, les options de configuration et les détails du comportement, consultez la documentation de capture de paquets