kubelet systemd 看门狗
Kubernetes v1.32 [beta]
(enabled by default: true)
在 Linux 节点上,Kubernetes 1.34 支持与
systemd 集成,以允许操作系统监视程序恢复失败的 kubelet。
这种集成默认并未被启用。它可以作为一个替代方案,通过定期请求 kubelet 的 /healthz
端点进行健康检查。
如果 kubelet 在设定的超时时限内未对看门狗做出响应,看门狗将杀死 kubelet。
systemd 看门狗的工作原理是要求服务定期向 systemd 进程发送一个保持活跃的信号。 如果 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 配置相关的一些细节:
- 如果你将 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 文档。
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.