Kubelet Systemd 看门狗

特性状态: Kubernetes v1.32 [beta] (默认启用: true)

在 Linux 节点上,Kubernetes 1.34 支持与 systemd 集成,以便操作系统主管能够恢复失败的 kubelet。此集成默认不启用。它可以作为定期请求 kubelet 的 /healthz 端点进行健康检查的替代方案。如果 kubelet 在超时期限内没有响应看门狗,看门狗将终止 kubelet。

systemd 看门狗的工作原理是要求服务定期向 systemd 进程发送“保持活跃”信号。如果在指定的超时期限内没有收到信号,则服务被认为无响应并被终止。然后,服务可以根据配置重新启动。

配置

使用 systemd 看门狗需要在 kubelet 服务单元文件的 [Service] 部分配置 WatchdogSec 参数。

[Service]
WatchdogSec=30s

设置 WatchdogSec=30s 表示服务看门狗超时时间为 30 秒。在 kubelet 中,sd_notify() 函数以 \( WatchdogSec \div 2\) 的间隔被调用,发送 WATCHDOG=1(保持活跃消息)。如果在超时期限内看门狗没有收到信号,kubelet 将被终止。将 Restart 设置为 "always"、"on-failure"、"on-watchdog" 或 "on-abnormal" 将确保服务自动重启。

关于 systemd 配置的一些细节

  1. 如果您将 systemd 的 WatchdogSec 值设置为 0,或省略不设置,则该单元不会启用 systemd 看门狗。
  2. kubelet 支持最短的看门狗周期为 1.0 秒;这是为了防止 kubelet 被意外终止。您可以在 systemd 单元定义中将 WatchdogSec 的值设置为短于 1 秒的周期,但 Kubernetes 不支持任何更短的间隔。超时时间不必是整数秒。
  3. Kubernetes 项目建议将 WatchdogSec 设置为大约 15 秒的周期。支持超过 10 分钟的周期,但明确 **不** 推荐。

配置示例

[Unit]
Description=kubelet: The Kubernetes Node Agent
Documentation=https://kubernetes.ac.cn/docs/home/
Wants=network-online.target
After=network-online.target

[Service]
ExecStart=/usr/bin/kubelet
# Configures the watchdog timeout
WatchdogSec=30s
Restart=on-failure
StartLimitInterval=0
RestartSec=10

[Install]
WantedBy=multi-user.target

下一步

有关 systemd 配置的更多详细信息,请参阅 systemd 文档

上次修改时间:2025 年 2 月 12 日太平洋标准时间下午 12:12:使用数学公式表示除法 (80609828b2)