Kubelet Systemd Watchdog
Kubernetes v1.32 [beta]
(стандартно увімкнено: true)На вузлах Linux, Kubernetes 1.32 підтримує інтеграцію з systemd, щоб дозволити супервізору операційної системи відновити несправний kubelet. Стандартно цю інтеграцію не увімкнено. Її можна використовувати як альтернативу періодичним запитам до точки доступу kubelet /healthz
для перевірки працездатності. Якщо протягом тайм-ауту kubelet не відповість на запит сторожового таймера, сторожовий таймер вбʼє kubelet.
Сторожовий таймер systemd працює, вимагаючи від сервісу періодично надсилати сигнал keep-alive процесу systemd. Якщо сигнал не отримано протягом визначеного тайм-ауту, служба вважається такою, що не реагує, і припиняє свою роботу. Після цього службу можна перезапустити відповідно до конфігурації.
Конфігурація
Використання сторожового таймера systemd вимагає налаштування параметра WatchdogSec
у розділі [Service]
файлу сервісного блоку kubelet:
[Service]
WatchdogSec=30s
Встановлення WatchdogSec=30s
вказує на тайм-аут службового сторожового тайм-ауту у 30 секунд. Усередині kubelet функція d_notify()
викликається з інтервалом WatchdogSec
÷ 2, щоб відправити WATCHDOG=1
(повідомлення про те, що він живий). Якщо сторожовий таймер не буде запущено протягом тайм-ауту, kubelet буде вбито. Встановлення Restart
у значення "always", "on-failure", "on-watchdog" або "on-abnormal" забезпечить автоматичний перезапуск сервісу.
Дещо про конфігурацію systemd:
- Якщо ви встановите значення systemd для параметра
WatchdogSec
рівним 0 або не встановите його, сторожовий таймер systemd буде вимкнено для цього пристрою. - Kubelet підтримує мінімальний період роботи сторожового таймера 1.0 секунди; це необхідно для запобігання несподіваного завершення роботи kubelet. Ви можете встановити значення
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
# Налаштування таймауту watchdog
WatchdogSec=30s
Restart=on-failure
StartLimitInterval=0
RestartSec=10
[Install]
WantedBy=multi-user.target
Що далі
Більш детальну інформацію про конфігурацію systemd можна знайти у документації до systemd.