По умолчанию, когда вы вносите определённые изменения в раздел systemd
units объекта MachineConfig
, оператор Machine Configuration выполнит дренаж и перезагрузку узлов, связанных с этим MachineConfig
. Однако изменения в обычных файлах, как правило, не вызывают перезагрузку, что может привести к тому, что конфигурация не вступит в силу, как ожидалось. Чтобы решить эту проблему, вы можете определить политики прерывания узлов, чтобы указать, какие типы изменений должны вызывать перезагрузку узлов или другие действия прерывания. Эти политики настраиваются в объекте MachineConfiguration
, расположенном в пространстве имён cpaas-system
. См. пример ниже для настройки политики прерывания узлов.
После определения оператор Machine Configuration проверяет политику на наличие ошибок, таких как неверный формат. Затем он записывает политику в поле status.nodeDisruptionPolicyStatus
объекта MachineConfiguration
. Эти пользовательские политики переопределяют настройки прерывания по умолчанию в кластере.
По умолчанию с кластером устанавливается пользовательский ресурс MachineConfiguration
с именем cluster
. Вы можете настроить поведение прерывания узлов на этом ресурсе.
Политики прерывания узлов позволяют определить, что происходит при изменениях в следующих областях конфигурации:
Файлы: Вы можете определить поведение при изменениях файлов (за исключением изменений в корневом каталоге). По умолчанию изменения файлов не вызывают прерывания. Вы можете изменить это поведение с помощью поля spec.defaultNodeDisruptionPolicySpecAction.files
.
Systemd Units: Вы можете создавать или изменять службы systemd
, включая их включение, отключение или изменение состояния. По умолчанию изменения в systemd
units вызывают дренаж узла и перезагрузку.
SSH Public Keys: Вы можете добавлять или обновлять SSH-ключи для пользователя boot
. Эти изменения применяются немедленно по умолчанию и не вызывают перезагрузку или дренаж.
Каждое изменение оценивается в соответствии с политикой прерывания узлов, которая может вызвать одно или несколько из следующих действий:
Reboot
: Дренаж и перезагрузка узла.None
: Прерывание не вызывается; изменение применяется без уведомления.Drain
: Дренаж узла без перезагрузки.Restart
: Перезапуск указанной службы systemd
.DaemonReload
: Перезагрузка всех конфигураций systemd
units.Ниже приведена конфигурация по умолчанию для ресурса MachineConfiguration
с именем cluster
после установки:
Эта конфигурация означает:
Вы можете изменить действие по умолчанию для изменений файлов, чтобы они вызывали перезагрузку:
С этой конфигурацией любое изменение управляемого файла приведёт к дренажу и перезагрузке затронутого узла оператором Machine Configuration.
Вы также можете определить действия прерывания для конкретного пути файла. В следующем примере изменения файла /usr/local/bin/myapp.sh
не вызовут перезагрузку узла, а вместо этого приведут к перезагрузке конфигурации systemd и перезапуску связанной службы:
В этом случае при обновлении /usr/local/bin/myapp.sh
оператор Machine Configuration перезагрузит все systemd
units и перезапустит myapp.service
— без дренажа или перезагрузки узла.