在容器业务请求的网络问题排查中,可以通过nsenter
进入业务容器网络命名空间中抓包,分析根因。
1.查出pod所在节点信息,并登陆 pod 所在节点。
2. 在节点上查找pod 中业务容器ID,以下截图以 Containerd 运行时为例。
# docker 运行时
docker ps | grep <业务容器名>
# containerd 运行时
crictl ps | grep <业务容器名>
如下图(该示例容器名为data-process):
3. 查找容器 pid。
# docker 运行时
docker inspect <container-id>| grep Pid
# containerd 运行时
crictl inspect <container-id>| grep pid
根据容器ID查找容器pid, 如下图:
4. 进入业务容器的网络命名空间。
nsenter -t <pid> -n
根据查询到的容器pid, 通过nsenter 命令进入到业务容器网络命名空间,可以通过查看网卡IP情况核查是否进入期望的容器网络空间中,如下图:
5. 执行业务抓包命令:
参考抓包命令:
# 使用 root 权限循环抓每个包文件大小为10M, 文件数量为 100 的数据包, 并后台运行
tcpdump -nni eth0 host 8.8.8.8 and port 53 -w test.cap -C10M -Zroot -W100 &
6. 待复现结束抓包并取包分析,通过fg
命令调出后台运行抓包程序,使用CTRL C
停止抓包(或查询抓包进程pid 后 kill -9 结束):
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。