背景
工具介绍
nsenter 是一款可以进入进程的名称空间中。例如,如果一个容器以非 root 用户身份运行,而使用 docker exec
进入其中后,但该容器没有安装 sudo
或未 netstat
,并且您想查看其当前的网络属性,如开放端口,这种场景下将如何做到这一点?nsenter 就是用来解决这个问题的。
nsenter (namespace enter) 可以在容器的宿主机上使用 nsenter
命令进入容器的命名空间,以容器视角使用宿主机上的相应网络命令进行操作。当然需要拥有 root
权限
网络故障如何抓包 , 容器内部没有工具怎么办 ??
创建容器测试
获取容器ID
使用kubectl 命令获取ID
获取PID
拿到 container id 后,我们登录到 pod 所在节点上去获取其主进程 pid。
获取节点 kubectl get pod -owide
containerd 运行时使用 crictl 命令获取:
dockerd 运行时使用 docker 命令获取:
nsenter 进入容器netns
在对应pod 的节点执行一下命令 ip a 查看是否进入容器
抓包
后面会详细介绍tcpdump 使用