读懂这一篇,集群节点不下线( 六 )

3. 什么是 PLEG

这个报错很清楚的告诉我们 , 容器 runtime 是不工作的 , 且 PLEG 是不健康的 。 这里容器 runtime 指的就是 docker daemon , Kubelet 通过直接操作 docker daemon 来控制容器的生命周期 。

而这里的 PLEG , 指的是 pod lifecycle event generator 。

PLEG 是 kubelet 用来检查容器 runtime 的健康检查机制 。 这件事情本来可以由 kubelet 使用 polling 的方式来做 。 但是 polling 有其成本上的缺陷 , 所以 PLEG 应用而生 。 PLEG 尝试以一种“中断”的形式 , 来实现对容器 runtime 的健康检查 , 虽然它实际上同时用了 polling 和“中断”两种机制 。

基本上看到上边的报错 , 我们可以确认 , 容器 runtime 出了问题 。 在有问题的节点上 , 通过 docker 命令尝试运行新的容器 , 命令会没有响应 。 这说明上边的报错是准确的 。

容器 runtime

1. Docker Daemon 调用栈分析

Docker 作为阿里云 Kubernetes 集群使用的容器 runtime , 在 1.11 之后 , 被拆分成了多个组件以适应 OCI 标准 。

推荐阅读