Kubelet Systemd 看門狗

功能狀態: Kubernetes v1.32 [beta] (預設啟用:true)

在 Linux 節點上,Kubernetes 1.32 支援與 systemd 整合,以允許作業系統監管程式復原失敗的 kubelet。此整合預設為停用。它可以作為定期請求 kubelet 的 /healthz 端點進行健康檢查的替代方案。如果 kubelet 在逾時期間內沒有回應看門狗,看門狗將會終止 kubelet。

systemd 看門狗的工作原理是要求服務定期將保持連線訊號傳送至 systemd 程序。如果在指定的逾時期間內未收到訊號,則服務會被視為無回應並終止。然後可以根據組態重新啟動服務。

組態

使用 systemd 看門狗需要在 kubelet 服務單元檔案的 [Service] 區段中設定 WatchdogSec 參數

[Service]
WatchdogSec=30s

設定 WatchdogSec=30s 表示服務看門狗逾時時間為 30 秒。在 kubelet 內部,會以 WatchdogSec ÷ 2 的間隔調用 sd_notify() 函數,以傳送 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.dev.org.tw/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: Add system watchdog configuration doc (#48465) (383dd007a3)