容器PID

架构部的同事问了我两个问题: 宿主机上有个进程很耗 cpu,怎么判断它是不是某个容器的进程; 如果它是跑在容器里,怎么查到是哪个容器(container id); 解决方案 有两种方法来解决上面两个问题: cgroup 通过查看pid的cgroup是否含有 slice信息来判断是否是容器进程: 主机进程 cgroup 直接运行在宿主机主的进程的cgroup是没有slice信息的: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 [root@deoops ~]# cat /proc/1/cgroup 11:perf_event:/ 10:memory:/ 9:devices:/ 8:cpuacct,cpu:/ 7:cpuset:/ 6:hugetlb:/ 5:blkio:/ 4:net_prio,net_cls:/ 3:freezer:/ 2:pids:/ 1:name=systemd:/ [root@deoops ~]# cat /proc/19/cgroup 11:perf_event:/ 10:memory:/ 9:devices:/ 8:cpuacct,cpu:/ 7:cpuset:/ 6:hugetlb:/ 5:blkio:/ 4:net_prio,net_cls:/ 3:freezer:/ 2:pids:/ 1:name=systemd:/ k8s pod进程 cgroup 在宿主机上看跑在容器进程的cgroup是可以看到slice信息的: ...

March 13, 2020 · datewu