一、场景描述


在我们的K8s集群中,会遇到某个宿主机突然资源耗费很多,但是上面跑的Pod无法确定是哪个容器,由于每个Pod里面的进程都是对应的宿主机上的一个普通用户进程,所以这个时候我们就可以通过查看宿主机上占用资源较高的那个进程PID号来查找到对应的Pod容器服务。

二、实操过程


1、查看服务器资源使用情况


我们可以通过top命令,然后按住大写P对CPU一列进行排序,可以看到下图中,PID为5174的进程占用CPU使用率较高,我们可以查看该PID对应的Pod是啥

k8s-podpid01

2、查看PID对应的Cgroup


[root@localhost ~]# cat /proc/5174/cgroup


k8s-podpid02

- 我们可以根据上图中的随机ID号,查到对应的容器

#通过下面的命令过滤出来对应的ID号
cat /proc/5174/cgroup | awk -F '/|-' '{print $8}'


3、根据ID号查找对应的容器


[root@localhost ~]# docker ps | grep 6f2953085ed6


k8s-pid