容器(docker、k8s、kubernetes)环境下如何进行tcpdump

应用时运行在 k8s 集群中的,与传统的在虚拟机直接通过 tcpdump 抓包方式略有不同。因为无法精确定位,开始抓的包都巨大。而实际上 它们只是在宿主机上不同 namespace 运行的进程而已 。因此要在不同的容器抓包可以简单地使用命令切换 nsenter即可,可以使用在宿主机上的 tcpdump 等应用。

找到宿主机

通过容器的界面或者kubectl get pod -n your-namespace -o yaml your-app

获取pod的pid

1、先找到容器的id,docker ps

2、然后进行到镜像中找到pid,docker inspect 加上面的id

切换命名空间

1、nsenter --target pid -n

2、ifconfig就可以看到pod的ip了,然后就可以使用tcpdump

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐