kubelet systemd 看门狗
特性状态:
Kubernetes v1.32 [beta]
(enabled by default: true)在 Linux 节点上,Kubernetes 1.32 支持与
systemd 集成,以允许操作系统监视程序恢复失败的 kubelet。
这种集成默认并未被启用。它可以作为一个替代方案,通过定期请求 kubelet 的 /healthz
端点进行健康检查。
如果 kubelet 在设定的超时时限内未对看门狗做出响应,看门狗将杀死 kubelet。
systemd 看门狗的工作原理是要求服务定期向 systemd 进程发送一个保持活跃的信号。 如果 systemd 进程在指定的超时时限内未接收到某服务发出的信号,则对应的服务被视为无响应并被终止。 之后 systemd 进程可以基于配置重启该服务。
配置
使用 systemd 看门狗需要在 kubelet 服务单元文件的 [Service]
部分配置 WatchdogSec
参数:
[Service]
WatchdogSec=30s
设置 WatchdogSec=30s
表示服务看门狗超时时限为 30 秒。
在 kubelet 内,sd_notify()
函数被调用,以 WatchdogSec
÷ 2 的时间间隔,
发送 WATCHDOG=1
(保持活跃的消息)。如果在超时时限内看门狗未被“投喂”此信号,kubelet 将被杀死。
将 Restart
设置为 "always"、"on-failure"、"on-watchdog" 或 "on-abnormal"
将确保服务被自动重启。
systemd 配置相关的一些细节:
- 如果你将 systemd 的
WatchdogSec
值设置为 0,或省略不设置,则对应的单元上不启用 systemd 看门狗。 - kubelet 支持设置的最小看门狗超时时限为 1.0 秒;这是为了防止 kubelet 被意外杀死。
你可以在 systemd 单元定义中将
WatchdogSec
的值设置为短于 1 秒的超时时限, 但 Kubernetes 不支持任何更短的时间间隔。超时时限不必是整数的秒数。 - Kubernetes 项目建议将
WatchdogSec
时限设置为大约 15 秒。 系统支持超过 10 分钟的时限设置,但明确不推荐这样做。
示例配置
[Unit]
Description=kubelet: The Kubernetes Node Agent
Documentation=https://kubernetes.io/docs/home/
Wants=network-online.target
After=network-online.target
[Service]
ExecStart=/usr/bin/kubelet
# 配置看门狗的超时时限
WatchdogSec=30s
Restart=on-failure
StartLimitInterval=0
RestartSec=10
[Install]
WantedBy=multi-user.target
接下来
有关 systemd 配置的细节,请参阅 systemd 文档。
最后修改 December 19, 2024 at 9:31 AM PST: [zh] Add systemd-watchdog.md and its feature gate (ba2944fdf4)