View a markdown version of this page

Capturez le trafic réseau sur un nœud géré à l'aide de kubectl et S3 - Amazon EKS

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 kubectl installé 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œuds (tools/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.

  1. Identifiez le nœud à partir duquel vous souhaitez capturer le trafic.

    kubectl get nodes
  2. 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-run

    Le script nécessite Python 3 pyyaml installé boto3 et kubectl configuré pour votre cluster.

    Le script génère une NodeDiagnostic ressource semblable à la suivante. Cet exemple est fourni à titre de référence ; notez que les upload champs 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 raison Success lorsque la capture est terminée et que tous les fichiers sont téléchargés.

  • Completedavec raison Failure si 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 dans le référentiel des agents de surveillance des nœuds.