MachineHealthChecks

Обзор

MachineHealthCheck (MHC) — ресурс Cluster API (cluster.x-k8s.io), механизм для автоматического обнаружения и восстановления неработоспособных машин. При срабатывании условий (например, узел NotReady) MHC может перезапустить или пересоздать машину.

Где настраивать: АдминистрированиеУправление узламиКонфигурация группы → вкладка MachineHealthCheck. Расширенное редактирование YAML — в кластере управления: АдминистрированиеКастомные ресурсыMachineHealthCheck.

По умолчанию при установке клиентского кластера создаётся MachineHealthCheck для группы Control Plane и отдельная проверка для каждой группы Worker. Можно добавить дополнительные конфигурации (+ Добавить).

Скриншот: MachineHealthCheck

MachineHealthCheck


Параметры MachineHealthCheck

maxUnhealthy (%)

Максимальный процент нездоровых узлов в группе, при котором MHC будет восстанавливать узлы.

Обратите внимание! если нездоровых узлов больше maxUnhealthy, MHC не будет восстанавливать узлы (защита от каскадного удаления).

Примеры:

maxUnhealthy Узлов в группе Нездоровых Восстановление
90% 2 1 (50%) Да
40% 2 1 (50%) Нет
50% 4 2 (50%) Да

nodeStartupTimeout

Время ожидания присоединения нового узла к кластеру. Если узел не станет Ready за это время, он считается нездоровым.

Слишком маленькое значение может привести к тому, что ВМ не успеет создаться и присоединиться — MHC будет постоянно пересоздавать узлы (цикл).

Рекомендация: 10–15 минут в зависимости от провайдера и скорости создания ВМ.

Условия применения (unhealthyConditions)

Условия, при которых узел считается нездоровым:

Параметр Описание
Тип NetworkUnavailable, DiskPressure, MemoryPressure, PIDPressure, Ready
Статус True, False, Unknown
Timeout Время ожидания, после которого условие считается действительным

Рекомендация: не устанавливать слишком короткий Timeout — возможны ложные срабатывания при кратковременных сбоях. Слишком длинный Timeout — простой нагрузки на нерабочем узле.

Пример настроек:

  • Тип: Ready, Статус: Unknown, Timeout: 5 мин
  • Тип: Ready, Статус: False, Timeout: 5 мин

MHC сработает, если по истечении 5 минут узел в состоянии Ready=Unknown или Ready=False.


Создание и редактирование MHC

  1. На вкладке MachineHealthCheck нажмите + Добавить.
  2. Задайте название (после сохранения изменить нельзя).
  3. Укажите maxUnhealthy, nodeStartupTimeout и условия unhealthyConditions.
  4. Нажмите Сохранить.

Справочно: перечень ресурсов cluster.x-k8s.io, связанных с узлами, вместе с другими группами CAPI — на странице Создание узлов при развертывании клиентского кластера.