Ayude a mejorar esta página
Para contribuir a esta guía del usuario, elija el enlace Edit this page on GitHub que se encuentra en el panel derecho de cada página.
Captura del tráfico de red un nodo administrado mediante kubectl y S3
Aprenda a recuperar los registros de nodos de un nodo administrado por Amazon EKS que tenga el agente de supervisión de nodos. El agente ejecuta tcpdump en el nodo, comprime los archivos de captura y los carga en su bucket de S3.
Requisitos previos
Asegúrese de contar con lo siguiente:
-
Un clúster del modo automático de Amazon EKS con el agente de supervisión de nodos. Para obtener más información, consulte Detección de los problemas de estado de los nodos y reparación automática de los nodos.
-
La herramienta de línea de comandos
kubectlinstalada y configurada para comunicarse con el clúster. -
AWS CLI instalada y sesión iniciada con los permisos suficientes para crear buckets y objetos de S3.
-
Una versión reciente de Python 3 instalada.
-
El SDK de AWS para Python 3 y Boto 3 instalado.
-
La biblioteca PyYAML instalada (
pip install pyyaml).
Paso 1: Creación de un destino de bucket de S3 (opcional)
Si aún no tiene un bucket de S3 para almacenar los archivos capturados, cree uno. Sustituya los valores de bucket-name y region por sus valores.
aws s3api create-bucket --bucket<bucket-name>\ --region<region>\ --create-bucket-configuration LocationConstraint=<region>
nota
El parámetro --create-bucket-configuration es obligatorio para todas las regiones excepto us-east-1.
Paso 2: Inicio de la captura de paquetes
Utilice el script start-capture.py del repositorio del agente de supervisión de nodostools/start-capture.py) para generar credenciales de S3 prefirmadas, crear el recurso NodeDiagnostic y aplicarlo al clúster.
-
Identifique el nodo del que desea capturar el tráfico.
kubectl get nodes -
Guarde el script start-capture.py
del repositorio del agente de supervisión de nodos en su máquina local y ejecútelo. Sustituya los valores de <bucket-name>y<node-name>por sus valores.python3 start-capture.py --bucket<bucket-name>--node<node-name>Opciones comunes:
# 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-runEl script requiere que Python 3 con
boto3ypyyamlesté instalado, así comokubectlconfigurado para su clúster.El script genera un recurso
NodeDiagnosticcomo el siguiente. Este ejemplo se proporciona como referencia; tenga en cuenta que los camposuploadrequieren credenciales POST de S3 prefirmadas que el script genera mediante programación.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)
Paso 3: Supervisión del progreso de la captura.
Compruebe el estado de la captura.
kubectl describe nodediagnostic<node-name>
El estado mostrará:
-
Runningmientras la captura está en proceso. -
Completedcon el motivoSuccesscuando finalice la captura y se carguen todos los archivos. -
Completedcon el motivoFailuresi la captura encontró errores.
Para ver el estado completo, incluido captureID (utilizado para la identificación de la ruta de S3):
kubectl get nodediagnostic<node-name>-o jsonpath='{.status.captureStatuses}'
Paso 4: Descarga de los archivos de captura de S3
Una vez que se muestre el estado Success, descargue los archivos de captura de S3.
aws s3 cp s3://<bucket-name>/captures/ ./captures/ --recursive
Los archivos están en formato pcap comprimido con gzip. Descomprima y analice con tcpdump o Wireshark:
gunzip captures/*.gz tcpdump -r captures/capture.pcap0000 -n
Paso 5: Eliminar
Los recursos NodeDiagnostic no se eliminan automáticamente. Limpie después de haber obtenido sus archivos de captura. Al eliminar el recurso mientras se está realizando una captura, la captura se detendrá inmediatamente.
kubectl delete nodediagnostic<node-name>
Opciones de configuración y comportamiento
Para obtener la referencia completa de las especificaciones de packetCapture, las opciones de configuración y los detalles del comportamiento, consulte la documentación de captura de paquetes