✅ Node Readiness Controller: расширение логики готовности узлов в Kubernetes
Стандартные условия (Conditions) узла Kubernetes (Ready, DiskPressure, PIDPressure и др.) определяют возможность запуска подов. Однако в ряде сценариев этой информации недостаточно для корректной оценки состояния узла.
✅ Node Readiness Controller — компонент, появившейся в 2026 году, который расширяет механизм оценки готовности узлов. Он позволяет добавлять пользовательские условия готовности, влияющие на планирование подов, без модификации kubelet.
🔫 Область применения
— Ограниченность стандартных метрик: Kubelet маркирует узел как Ready при успешном ответе на запросы. При отказе CNI-плагина или container runtime узел может оставаться Ready, несмотря на неработоспособность подов.
— Выявление скрытых сбоев: Некоторые отказы оборудования или ОС не изменяют статус kubelet, но делают узел непригодным для выполнения рабочих нагрузок.
— Изоляция неисправных узлов: Контроллер централизованно переводит проблемные узлы в состояние NotReady или накладывает taints, предотвращая планирование подов.
🔫 Основные преимущества
✅ Гибкие условия готовности — Определение собственного набора проверок, которые узел должен пройти, чтобы считаться готовым к запуску подов. Например, верификация драйверов GPU, доступность CNI или корректная работа агентов observability.
✅ Автоматическое управление taints — Контроллер автоматически накладывает или снимает taints на узлы в зависимости от состояния заданных условий. Это предотвращает попадание подов на узлы, не прошедшие проверку, и освобождает их сразу после восстановления.
✅ Декларативная инициализация узлов — Многоэтапная подготовка узлов описывается в виде правил и выполняется предсказуемо. Ход инициализации отслеживается через статус ресурсов, что упрощает отладку и аудит.
🔫Основные концепции и особенности
➡️ Два режима работы
Непрерывный контроль — проверки выполняются постоянно на протяжении всего жизненного цикла узла. При отказе критического компонента (например, драйвера устройства) узел немедленно изолируется.
Одноразовая инициализация — проверки запускаются только при вводе узла в эксплуатацию. После успешного прохождения правила мониторинг прекращается.
➡️Интеграция через Node Conditions
Контроллер не выполняет проверки самостоятельно, а реагирует на условия узла (Node Conditions). Это позволяет использовать:
• Node Problem Detector (NPD) — кастомные скрипты диагностики;
• Readiness Condition Reporter — легковесный агент для проверки локальных HTTP-эндпоинтов и обновления условий.
➡️ Безопасное внедрение — Режим dry run имитирует применение правил без фактического воздействия на кластер. Контроллер логирует планируемые действия и отображает список затронутых узлов, позволяя проверить корректность конфигурации до включения защиты.
Node Readiness Controller дополняет стандартную логику kubelet, позволяя учитывать реальное состояние инфраструктурных компонентов и автоматически управлять доступностью узлов./
👉 Подробнее в официальном блоге k8s и в git репозитории Node Readiness Controller
#заметкиИнженера
Post #2675
1.02K

- 👍 8
- ❤ 3
- 🔥 2