Unterstützung für die Verbesserung dieser Seite beitragen
Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Um zu diesem Benutzerhandbuch beizutragen, wählen Sie den GitHub Link Diese Seite bearbeiten auf, der sich im rechten Bereich jeder Seite befindet.
Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Erfassen Sie den Netzwerkverkehr auf einem verwalteten Knoten mit kubectl und S3
Erfahren Sie, wie Sie Netzwerkverkehr auf einem von Amazon EKS verwalteten Knoten erfassen, der über den Knotenüberwachungsagenten verfügt. Der Agent führt tcpdump auf dem Knoten aus, komprimiert Capture-Dateien und lädt sie in Ihren S3-Bucket hoch.
Voraussetzungen
Stellen Sie sicher, dass Sie über Folgendes verfügen:
-
Ein vorhandener Amazon EKS Auto Mode-Cluster mit dem Knotenüberwachungsagenten. Weitere Informationen finden Sie unter Erkennen Sie Probleme mit dem Knotenstatus und aktivieren Sie die automatische Knotenreparatur.
-
Das Befehlszeilentool
kubectl, das für die Kommunikation mit Ihrem Cluster installiert und konfiguriert wurde. -
Die AWS CLI wurde mit ausreichenden Berechtigungen installiert und angemeldet, um S3-Buckets und -Objekte zu erstellen.
-
Eine aktuelle Version von Python 3 ist installiert.
-
Das AWS SDK für Python 3, Boto 3, ist installiert.
-
Die PyYAML-Bibliothek ist installiert ()
pip install pyyaml.
Schritt 1: S3-Bucket-Ziel erstellen (optional)
Wenn Sie noch keinen S3-Bucket zum Speichern der Capture-Dateien haben, erstellen Sie einen. Ersetzen Sie bucket-name und region durch Ihre Werte.
aws s3api create-bucket --bucket<bucket-name>\ --region<region>\ --create-bucket-configuration LocationConstraint=<region>
Anmerkung
Der --create-bucket-configuration Parameter ist für alle Regionen erforderlich, außerus-east-1.
Schritt 2: Starten Sie die Paketerfassung
Verwenden Sie das start-capture.py Skript aus dem Node Monitoring Agent Repositorytools/start-capture.py), um vorsignierte S3-Anmeldeinformationen zu generieren, die NodeDiagnostic Ressource zu erstellen und sie auf Ihren Cluster anzuwenden.
-
Identifizieren Sie den Knoten, von dem Sie Datenverkehr erfassen möchten.
kubectl get nodes -
Speichern Sie das Skript start-capture.py
aus dem Node Monitoring Agent Repository auf Ihrem lokalen Computer und führen Sie es dann aus. Ersetzen Sie <bucket-name>und<node-name>durch Ihre Werte.python3 start-capture.py --bucket<bucket-name>--node<node-name>Allgemeine Optionen:
# 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-runFür das Skript ist Python 3 erforderlich, das für Ihren Cluster
pyyamlinstalliertboto3undkubectlkonfiguriert ist.Das Skript generiert eine
NodeDiagnosticRessource wie die folgende. Dieses Beispiel dient als Referenz. Beachten Sie, dass für dieuploadFelder vorsignierte S3-POST-Anmeldeinformationen erforderlich sind, die vom Skript programmgesteuert generiert werden.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)
Schritt 3: Überwachen Sie den Fortschritt der Erfassung
Überprüfen Sie den Status der Erfassung.
kubectl describe nodediagnostic<node-name>
Der Status wird wie folgt angezeigt:
-
Runningwährend die Erfassung läuft. -
Completedmit BegründungSuccess, wenn die Erfassung abgeschlossen ist und alle Dateien hochgeladen wurden. -
Completedmit GrundFailure, falls bei der Erfassung Fehler aufgetreten sind.
Um den vollständigen Status zu sehen, einschließlich captureID (wird für die S3-Pfadidentifizierung verwendet):
kubectl get nodediagnostic<node-name>-o jsonpath='{.status.captureStatuses}'
Schritt 4: Laden Sie die Capture-Dateien von S3 herunter
Sobald der Status angezeigt wirdSuccess, laden Sie die Capture-Dateien von S3 herunter.
aws s3 cp s3://<bucket-name>/captures/ ./captures/ --recursive
Die Dateien sind im GZIP-komprimierten PCAP-Format. Dekomprimieren und analysieren Sie mit tcpdump oder Wireshark:
gunzip captures/*.gz tcpdump -r captures/capture.pcap0000 -n
Schritt 5: Bereinigen
NodeDiagnosticRessourcen werden nicht automatisch gelöscht. Bereinigen Sie, nachdem Sie Ihre Capture-Dateien erhalten haben. Wenn Sie die Ressource löschen, während eine Erfassung läuft, wird die Erfassung sofort beendet.
kubectl delete nodediagnostic<node-name>
Konfigurationsoptionen und Verhalten
Die vollständige packetCapture Spezifikationsreferenz, die Konfigurationsoptionen und Verhaltensdetails finden Sie in der Dokumentation zur Paketerfassung