K8S集群宿主机CPU过高处理
今天告警收到一个K8S集群的node节点CPU使用率过高告警,经过排查是一个POD没有限制CPU使用导致的,在容器云环境中应用服务最好做CPU、MEM的限制,不然有异常的服务会导致不可想象后果。
处理过程
-
查询服务的PID
通过top
命令我们可以看到确实是CPU使用过高,也能查到对应的PID
-
查对应的容器名称
根据docker ps -q | xargs docker inspect --format '{{.State.Pid}} {{.Name}}' | column -t|grep PID
命令可以查询到对应的容器名称
说明:有时候容器里面的pid是1的进程不是应用进程就需要看看宿主机的对应的PID的子进程或者父进程;容器的名称包含命名空间和POD名称。 -
进入容器定位代码问题
此时我们可以进入容器,查询JVM的信息看看那个类导致的CPU使用过高,请参考之前的文章。