Kubelet Systemd 监视器

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

在 Linux 节点上,Kubernetes 1.32 支持与 systemd 集成,以允许操作系统监视器恢复失败的 kubelet。 此集成默认情况下未启用。 它可以作为定期请求 kubelet 的 /healthz 端点进行运行状况检查的替代方案。 如果 kubelet 未在超时期限内响应 watchdog,watchdog 将终止 kubelet。

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

配置

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

[Service]
WatchdogSec=30s

设置 WatchdogSec=30s 表示服务 watchdog 超时时间为 30 秒。 在 kubelet 中,以 WatchdogSec ÷ 2 的间隔调用 sd_notify() 函数,以发送 WATCHDOG=1(保持活动消息)。 如果 watchdog 未在超时期限内馈送,则 kubelet 将被终止。 将 Restart 设置为 "always"、"on-failure"、"on-watchdog" 或 "on-abnormal" 将确保该服务自动重新启动。

有关 systemd 配置的一些详细信息

  1. 如果将 systemd 的 WatchdogSec 值设置为 0 或省略设置,则不会为此单元启用 systemd watchdog。
  2. kubelet 支持的最小 watchdog 周期为 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 文档

上次修改时间:2024 年 11 月 27 日晚上 8:54 PST: feat: 添加系统看门狗配置文档 (#48465) (383dd007a3)