キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 
cancel
1672
閲覧回数
0
いいね!
0
コメント
mnagao
Cisco Employee
Cisco Employee

特定の Kubernets Pod についてパケットキャプチャを取得する場合、Pod 内で tcpdump を取得し、kubectl cp または docker cp コマンドによりホストOS 側にコピーする方法と、bridge の vEth インターフェースで tcpdump を取得する方法があります。通常は後者をおすすめします。

 

Pod 内で tcpdump を取得した場合、kubectl cp コマンドの実行が制限されていることがあります。その場合は docker ps コマンドでコンテナ ID を確認し、docker cp を使用する必要があります。コピー後はコンテナからキャプチャファイルを削除してください。

[Fri Jul 24 0:41:15 UTC] maglev@10.70.70.231 (maglev-master-1) tmp
$ magctl service attach -D command-runner

Attaching to 'fusion/command-runner-service-87649dc96-ssgg6'
root@command-runner-service-87649dc96-ssgg6:/# tcpdump -i eth0 -w /pod.pcap
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
^C215 packets captured
215 packets received by filter
0 packets dropped by kernel
root@command-runner-service-87649dc96-ssgg6:/#exit

Fri Jul 24 03:46:28 UTC] maglev@10.70.70.231 (maglev-master-1) ~
$ kubectl cp fusion/command-runner-service-87649dc96-ssgg6:/pod.pcap /data/tmp/pod.pcap
error: pod.pcap no such file or directory

[Fri Jul 24 03:46:32 UTC] maglev@10.70.70.231 (maglev-master-1) ~
$ docker ps | grep command-runner | grep -v POD
c4a2189deb00        maglev-registry.maglev-system.svc.cluster.local:5000/fusion/command-runner-service                  "/opt/maglev/bin/ser…"   2 weeks ago         Up 2 weeks                              k8s_command-runner-service_command-runner-service-87649dc96-ssgg6_fusion_8bdb70da-bfa7-11ea-8836-3cfdfeced6e4_0

[Fri Jul 24 03:46:47 UTC] maglev@10.70.70.231 (maglev-master-1) ~
$ docker cp c4a2189deb00:/pod.pcap /data/tmp/pod.pcap

[Fri Jul 24 03:47:18 UTC] maglev@10.70.70.231 (maglev-master-1) ~
$ ls -l /data/tmp/*.pcap
-rw-r--r-- 1 maglev maglev 134616 Jul 24 02:49 /data/tmp/pod.pcap

[Fri Jul 24 03:47:26 UTC] maglev@10.70.70.231 (maglev-master-1) ~
$ magctl service attach -D command-runner

Attaching to 'fusion/command-runner-service-87649dc96-ssgg6'
root@command-runner-service-87649dc96-ssgg6:/# rm /pod.pcap
root@command-runner-service-87649dc96-ssgg6:/# exit
exit
 

 

 

ホスト OS 側で tcpdump を取得する場合は、Pod 内のコンテナの eth0 とペアリングされている vEth のインターフェース番号を確認し、そのインターフェースを指定して tcpdump を取得します。

まず、Pod にログインして ip address コマンド等を実行します。以下の例では vEth #470 がペアリングされていることが分かります。docker exec コマンドでの確認も可能です。

[Thu Jul 23 19:22:43 UTC] maglev@10.70.70.231 (maglev-master-1) ~
$ magctl service attach -D command-runner

Attaching to 'fusion/command-runner-service-87649dc96-ssgg6'
root@command-runner-service-87649dc96-ssgg6:/# ip address show dev eth0
4: eth0@if470: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 36:6b:85:07:1e:bc brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 10.61.3.190/32 scope global eth0
       valid_lft forever preferred_lft forever
root@command-runner-service-87649dc96-ssgg6:/# exit
exit

または docker コマンドでの確認
[Thu Jul 23 19:22:48 UTC] maglev@10.70.70.231 (maglev-master-1) ~ $ docker ps | grep command-runner | grep -v POD c4a2189deb00 maglev-registry.maglev-system.svc.cluster.local:5000/fusion/command-runner-service "/opt/maglev/bin/ser…" 2 weeks ago Up 2 weeks k8s_command-runner-service_command-runner-service-87649dc96-ssgg6_fusion_8bdb70da-bfa7-11ea-8836-3cfdfeced6e4_0 [Thu Jul 23 19:23:01 UTC] maglev@10.70.70.231 (maglev-master-1) ~ $ docker exec -it c4a2189deb00 ip address show dev eth0 4: eth0@if470: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default link/ether 36:6b:85:07:1e:bc brd ff:ff:ff:ff:ff:ff link-netnsid 0 inet 10.61.3.190/32 scope global eth0 valid_lft forever preferred_lft forever

当該インターフェース番号のインターフェース名を指定して tcpdump を実行し、通信を発生させることでパケットキャプチャを取得できます。

[Thu Jul 23 19:23:32 UTC] maglev@10.70.70.231 (maglev-master-1) ~
$ ip address | grep ^470
470: cali8017e49ca81@if4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 

[Thu Jul 23 19:24:14 UTC] maglev@10.70.70.231 (maglev-master-1) ~
$ sudo tcpdump -i cali8017e49ca81 -w /data/tmp/command-runner.pcap
tcpdump: listening on cali8017e49ca81, link-type EN10MB (Ethernet), capture size 262144 bytes
^C268 packets captured
277 packets received by filter
0 packets dropped by kernel
Getting Started

検索バーにキーワード、フレーズ、または質問を入力し、お探しのものを見つけましょう

シスコ コミュニティをいち早く使いこなしていただけるよう役立つリンクをまとめました。みなさんのジャーニーがより良いものとなるようお手伝いします