runc hang 导致 Kubernetes 节点 NotReady,这是为何?
- 内容介绍
- 文章标签
- 相关推荐
本文共计3054个文字,预计阅读时间需要13分钟。
Kubernetes 1.19.3,运行在CentOS 7.9.2009,内核5.4.94-1.el7.elrepo.x86_64,Docker 20.10.6。runc v1.0.0-rc93 存在bug,可能导致docker hang。线上报警提示集群中存在2-3个K8s节点处于NotReady状态。
Kubernetes 1.19.3
OS: CentOS 7.9.2009
Kernel: 5.4.94-1.el7.elrepo.x86_64
Docker: 20.10.6
先说结论,runc v1.0.0-rc93 有 bug,会导致 docker hang 住。
发现问题线上告警提示集群中存在 2-3 个 K8s 节点处于 NotReady 的状态,并且 NotReady 状态一直持续。
- kubectl describe node,有 NotReady 相关事件。
-
登录问题机器后,查看节点负载情况,一切正常。
-
查看 kubelet 日志,发现 PLEG 时间过长,导致节点被标记为 NotReady。
-
docker ps 正常。
-
执行 ps 查看进程,发现存在几个 runc init 的进程。runc 是 containerd 启动容器时调用的 OCI Runtime 程序。初步怀疑是 docker hang 住了。
要解决这个问题可以通过两种方法,首先来看一下 A 方案。
本文共计3054个文字,预计阅读时间需要13分钟。
Kubernetes 1.19.3,运行在CentOS 7.9.2009,内核5.4.94-1.el7.elrepo.x86_64,Docker 20.10.6。runc v1.0.0-rc93 存在bug,可能导致docker hang。线上报警提示集群中存在2-3个K8s节点处于NotReady状态。
Kubernetes 1.19.3
OS: CentOS 7.9.2009
Kernel: 5.4.94-1.el7.elrepo.x86_64
Docker: 20.10.6
先说结论,runc v1.0.0-rc93 有 bug,会导致 docker hang 住。
发现问题线上告警提示集群中存在 2-3 个 K8s 节点处于 NotReady 的状态,并且 NotReady 状态一直持续。
- kubectl describe node,有 NotReady 相关事件。
-
登录问题机器后,查看节点负载情况,一切正常。
-
查看 kubelet 日志,发现 PLEG 时间过长,导致节点被标记为 NotReady。
-
docker ps 正常。
-
执行 ps 查看进程,发现存在几个 runc init 的进程。runc 是 containerd 启动容器时调用的 OCI Runtime 程序。初步怀疑是 docker hang 住了。
要解决这个问题可以通过两种方法,首先来看一下 A 方案。

