首页 新闻 会员 周边

1. 为什么 Kubelet 要发心跳?

0
[已关闭问题] 关闭于 2026-06-10 08:20

Kubelet 发心跳是为了向集群“报平安”并“汇报工作”;而一旦失联,API Server 出于对业务连续性的保护,会主动将该节点“隔离”(NotReady)并把上面的业务“转移”(驱逐),这就是 Kubernetes 强大的自我修复(Self-healing)能力的体现。

● 节点上报心跳: kubelet 会定期向 API Server 发送心跳。在 Kubernetes 中,这种心跳主要通过更新 kube-node-lease 命名空间下的 Lease(租约)对象来实现。默认情况下, kubelet 每 10秒 就会更新一次这个 Lease 对象。

1. 数据持久化:首先,节点上的 kubelet 会定期(默认每10秒)向 API Server 发送请求,更新对应节点的 Lease 对象。API Server 接收到请求后,会将最新的心跳时间戳持久化存储到后端的 etcd 数据库中。
2. 控制器监听:节点控制器并不会直接去读取 etcd,而是通过 API Server 提供的 Watch(监听)机制,实时订阅 Lease 对象的状态变化。
3. 周期性检查:节点控制器默认每隔 5秒(由 --node-monitor-period 参数控制)就会去检查一次所有节点的心跳状态。

 


● 超时判定:如果节点控制器发现某个节点对应的 Lease 对象长时间没有更新,且失联时间超过了设定的宽限期(即 node-monitor-grace-period ,默认 40秒),节点控制器就会判定该节点失联,并将其状态标记为 NotReady 或 Unknown 。

*Tesla*的主页 *Tesla* | 老鸟四级 | 园豆:2156
提问于:2026-06-10 08:20
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册