linux cpu占用率如何看
249
2022-09-07
使用 nsenter 进入 netns 抓包
背景
我们使用 Kubernetes 时难免发生一些网络问题,往往需要进入容器的网络命名空间 (netns) 中,进行一些网络调试来定位问题,本文介绍如何进入容器的 netns。
获取容器 ID
使用 kubectl 获取 pod 中任意 cotnainer 的 id:
kubectl -n test
输出示例片段1 (containerd运行时):
Containers: debug: Container ID: containerd://529bbd5c935562a9ba66fc9b9ffa95d486c6324f26d8253d744ffe3dfd728289
输出示例片段2 (dockerd运行时):
Containers: debug: Container ID: docker://e64939086488a9302821566b0c1f193b755c805f5ff5370d5ce5e6f154ffc648
获取 PID
拿到 container id 后,我们登录到 pod 所在节点上去获取其主进程 pid。
containerd 运行时使用 crictl 命令获取:
$ crictl inspect 529bbd5c935562a9ba66fc9b9ffa95d486c6324f26d8253d744ffe3dfd728289 | grep -i pid "pid": 2266462, "pid": 1 "type": "pid"
此例中 pid 为 2266462
dockerd 运行时使用 docker 命令获取:
$ docker inspect e64939086488a9302821566b0c1f193b755c805f5ff5370d5ce5e6f154ffc648 | grep -i pid "Pid": 910351, "PidMode": "", "PidsLimit": 0,
此例中 pid 为 910351
使用 nsenter 进入容器 netns
在节点上使用 nsenter 进入 pod 的 netns:
nsenter -n --target 910351
调试网络
成功进入容器的 netns,可以使用节点上的网络工具进行调试网络,可以首先使用 ip a 验证下 ip 地址是否为 pod ip:
$ ip a1: lo:
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~