K8S的POD时常出现网络问题,而在制作容器镜像时往往没有安装网络排障工具,也没有配置sidecar容器,排障特别困难。为了解决这个问题我们可以通过nsenter,在node上抓取pod 的数据包 ## 获取pod所在的node位置,以及容器ID ``` kubectl describe pod pod-name -n namespace-name #Node: 192.168.1.21/192.168.1.21 //确认pod 在21这台服务器上 #Containers: # Container ID: containerd://d885d05d37342a24ebca5d791f803e4ae8698f654a94b0e4f1808e65cb4c0ef1 //确认容器ID ``` ## 获取容器的PID 我们登录21这台服务器,去获取主进程的PID ``` crictl inspect d885d05d37342a24ebca5d791f803e4ae8698f654a94b0e4f1808e65cb4c0ef1 # "info": { # "pid": 64774, ``` ## 使用 nsenter 进入容器 netns 在节点上使用 nsenter 进入 pod 的 netns: ``` nsenter -n --target 64774 ``` 查看IP地址 是否为POD IP地址 ``` ip a ``` 此时即可通过tcpdump抓包了,抓的包就是pod内的数据包。 ``` exit //通过此命令退出nsenter ```