之前我们有记录过一个笔记,是docker环境下通过查看到的进程PID号来查找到拥有该进程的POD,具体可以查看我之前的笔记:https://sulao.cn/post/925.html
近期基本都在将docker环境切换到containerd环境,所以这次根据需求来更新下containerd环境下根据PID查找对应POD的方法。
查找的方法基本和原来没有太大区别,只是有个别步骤会一样,下面我们来一起看看怎么查询。
首先我们还是获取我们要查询的PID号。例如我查询的是我的使用GPU资源的进程
例如我们要查询tf_cnn_benchmarks这个进程
ps -ef | grep tf_cnn_benchmarks root 12579 16322 99 17:05 pts/0 00:02:14 python3 tf_cnn_benchmarks.py --num_gpus=1 --batch_size=32 --num_batches=1000000
1.通过上述获取到的PID来查询mountinfo获取容器ID
cat /proc/12579/mountinfo | grep "cri-containerd-"
可以看到上述反馈的容器ID为10eb8ce46d6b62b8b1d48dd44a3311812ea640da8bbab067869bc070efc9e3c7
最后我们可以使用ctr命令来获取容器名字
ctr -n k8s.io c info 10eb8ce46d6b62b8b1d48dd44a3311812ea640da8bbab067869bc070efc9e3c7 | grep pod.name
2.同样可以和之前一样通过cgroup获取容器ID
cat /proc/12579/cgroup
最后还是使用ctr命令进行pod名字获取
另外crictl命令查出来的POD和ctr查出来的容器关联的方式我通过以下列子进行展示
crictl ps
加入我们查询10eb8ce46d6b6 这个ID的POD容器
ctr -n k8s.io task ls | grep 10eb8ce46d6b6 10eb8ce46d6b62b8b1d48dd44a3311812ea640da8bbab067869bc070efc9e3c7 14677 RUNNING
可以看到前面13位是关联的。