网络抓包
k8s pod抓包
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
1 可以先执行,看看pod运行的节点
kubectl get pods $PodName -n $NameSpace -o wide
2 登录到对应的node上
2.1 如果是 docker运行时,
2.1.1 找到容器ID
docker ps| grep $pod名称
2.1.2 然后再找到容器的进程pid
docker inspect -f {{.State.Pid}} 容器id
2.2 如果是containerd
2.2.1 找到容器的进程pid
> yum -y install jq
> crictl inspect $(crictl ps | grep `crictl pods | grep $POD_NAME名称 | awk '{print$1}'` | awk '{print$1}') | jq ".info | [.pid, .config.metadata.name]"
[
1734201,
"user-container-0"
]
[
4129503,
"queue-proxy"
]
[
4129434,
"filebeat"
]
2.2.2 进入容器网络命名空间:
安装下 nsenter工具:
> yum -y install util-linux.x86_64
进入到容器的网络名称空间
> PID="4129503" ; CONTAIN_NAME="queue-proxy"
> nsenter --target ${PID} -n
3. 抓包
tcpdump -i eth0 -s 0 -W 10 -C 100 -w /tmp/<POD_NAME>_<PID>_<CONTAIN_NAME>.pcap
本文由作者按照
CC BY 4.0
进行授权