View a markdown version of this page

Tangkap lalu lintas jaringan pada node terkelola menggunakan kubectl dan S3 - Amazon EKS

Bantu tingkatkan halaman ini

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Untuk berkontribusi pada panduan pengguna ini, pilih Edit halaman ini pada GitHub tautan yang terletak di panel kanan setiap halaman.

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Tangkap lalu lintas jaringan pada node terkelola menggunakan kubectl dan S3

Pelajari cara menangkap lalu lintas jaringan pada node terkelola Amazon EKS yang memiliki agen pemantauan node. Agen menjalankan tcpdump pada node, mengompres file pengambilan, dan mengunggahnya ke bucket S3 Anda.

Prasyarat

Pastikan Anda memiliki yang berikut:

  • Cluster Mode Otomatis Amazon EKS yang ada dengan agen pemantauan node. Untuk informasi selengkapnya, lihat Mendeteksi masalah kesehatan node dan mengaktifkan perbaikan node otomatis.

  • Alat kubectl baris perintah diinstal dan dikonfigurasi untuk berkomunikasi dengan cluster Anda.

  • AWS CLI diinstal dan masuk dengan izin yang cukup untuk membuat bucket dan objek S3.

  • Versi terbaru dari Python 3 diinstal.

  • AWS SDK untuk Python 3, Boto 3, diinstal.

  • Pustaka PyYaml diinstal (). pip install pyyaml

Langkah 1: Buat tujuan bucket S3 (opsional)

Jika Anda belum memiliki ember S3 untuk menyimpan file pengambilan, buat satu. Ganti bucket-name dan region dengan nilai-nilai Anda.

aws s3api create-bucket --bucket <bucket-name> \ --region <region> \ --create-bucket-configuration LocationConstraint=<region>
catatan

--create-bucket-configurationParameter diperlukan untuk semua wilayah kecualius-east-1.

Langkah 2: Mulai pengambilan paket

Gunakan start-capture.py skrip dari repositori agen pemantauan node (tools/start-capture.py) untuk menghasilkan kredenal S3 yang telah ditandatangani sebelumnya, membuat NodeDiagnostic sumber daya, dan menerapkannya ke cluster Anda.

  1. Identifikasi node tempat Anda ingin menangkap lalu lintas.

    kubectl get nodes
  2. Simpan skrip start-capture.py dari repositori agen pemantauan node ke mesin lokal Anda, lalu jalankan. Ganti <bucket-name> dan <node-name> dengan nilai-nilai Anda.

    python3 start-capture.py --bucket <bucket-name> --node <node-name>

    Opsi umum:

    # 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

    Script membutuhkan Python 3 dengan boto3 dan pyyaml diinstal, dan kubectl dikonfigurasi untuk cluster Anda.

    Skrip menghasilkan NodeDiagnostic sumber daya seperti berikut ini. Contoh ini disediakan untuk referensi; perhatikan bahwa upload bidang memerlukan kredenal S3 POST yang telah ditandatangani sebelumnya yang dihasilkan secara terprogram oleh skrip.

    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)

Langkah 3: Pantau kemajuan penangkapan

Periksa status penangkapan.

kubectl describe nodediagnostic <node-name>

Status akan menunjukkan:

  • Runningsementara penangkapan sedang berlangsung.

  • Completeddengan alasan Success ketika pengambilan selesai dan semua file diunggah.

  • Completeddengan alasan Failure jika penangkapan mengalami kesalahan.

Untuk melihat status lengkap termasuk captureID (digunakan untuk identifikasi jalur S3):

kubectl get nodediagnostic <node-name> -o jsonpath='{.status.captureStatuses}'

Langkah 4: Unduh file tangkapan dari S3

Setelah status ditampilkanSuccess, unduh file pengambilan dari S3.

aws s3 cp s3://<bucket-name>/captures/ ./captures/ --recursive

File-file tersebut adalah format pcap terkompresi gzip. Dekompresi dan analisis dengan tcpdump atau Wireshark:

gunzip captures/*.gz tcpdump -r captures/capture.pcap0000 -n

Langkah 5: Bersihkan

NodeDiagnosticsumber daya tidak dihapus secara otomatis. Bersihkan setelah Anda mendapatkan file pengambilan Anda. Menghapus sumber daya saat penangkapan sedang berjalan akan segera menghentikan pengambilan.

kubectl delete nodediagnostic <node-name>

Opsi dan perilaku konfigurasi

Untuk referensi packetCapture spesifikasi lengkap, opsi konfigurasi, dan detail perilaku, lihat dokumentasi pengambilan paket di repositori agen pemantauan node.