侧边栏壁纸
  • 累计撰写 59 篇文章
  • 累计创建 52 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

k8s进行pod级的抓包tcpdump

木东
2022-08-04 / 0 评论 / 0 点赞 / 36 阅读 / 0 字 / 正在检测是否收录...
温馨提示:
部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

因为某些关系原因,有时候需要排查pod和外部服务之间是否有网络异常情况,我们需要进行tcpdump抓包操作。

下面,是抓包的具体步骤:

  • 1 列出待抓包的pod 及分布在哪些节点上
kubectl get pods -n ns1 -o wide | egrep myapp
  • 2 找到对应的containerID
kubectl get pod -n ns1 myapp-xxxxxx-xxxx  -o json

这里我们可以看到一些 containerID 的信息,记录下来,例如我的是 f712d63e9415c02472dd247219fe2245bae8a13c03838b3043434dae81c2565e

  • 3 到对应的K8s Node节点上执行下面命令:
docker exec f712d63e9415c02472dd247219fe2245bae8a13c03838b3043434dae81c2565e /bin/bash -c 'cat /sys/class/net/eth0/iflink'

得到结果类似:533

  • 4 然后去找对应的虚拟网卡地址:
for i in /sys/class/net/veth*/ifindex; do grep -l 533 $i; done

得到结果类似:/sys/class/net/veth79c1674f/ifindex

  • 5 这样就可以在宿主机上抓包:
tcpdump -i veth79c1674f -w /root/tcpdump.cap
  • 6 然后用wireshark分析:

例如常用的条件表达式: ip.addr == x.x.x.x

0

评论区