• Русский
  • Политики прерывания узла

    Понимание прерывания узла в Machine Configuration

    По умолчанию, когда вы вносите определённые изменения в раздел systemd units объекта MachineConfig, Machine Configuration Operator выполнит drain и перезагрузит узлы, связанные с этим MachineConfig. Однако изменения обычных записей файлов, как правило, не приводят к перезагрузке, из-за чего конфигурация может не примениться ожидаемым образом. Чтобы решить эту проблему, вы можете определить политики прерывания узла, чтобы указать, какие типы изменений должны запускать перезагрузку узла или другие действия прерывания. Эти политики настраиваются в объекте MachineConfiguration, расположенном в namespace cpaas-system. См. пример ниже для настройки политики прерывания узла.

    После определения Machine Configuration Operator проверяет политику на наличие таких проблем, как некорректное форматирование. Затем он записывает политику в поле status.nodeDisruptionPolicyStatus объекта MachineConfiguration. Эти определённые пользователем политики переопределяют стандартные настройки прерывания кластера.

    Вместе с кластером устанавливается пользовательский ресурс MachineConfiguration с именем cluster. Вы можете настроить поведение прерывания узла в этом ресурсе.


    Что можно контролировать с помощью политик прерывания узла

    Политики прерывания узла позволяют определить, что происходит при изменении следующих областей конфигурации:

    • Files: Вы можете определить поведение для изменений файлов (за исключением изменений в корневом каталоге). По умолчанию изменения файлов не вызывают никаких действий прерывания. Вы можете изменить это поведение с помощью поля spec.defaultNodeDisruptionPolicySpecAction.files.

    • Systemd Units: Вы можете создавать или изменять службы systemd, включая их включение, отключение или изменение состояния. По умолчанию изменения units systemd вызывают drain и перезагрузку узла.

    • SSH Public Keys: Вы можете добавлять или обновлять SSH-ключи для пользователя boot. По умолчанию эти изменения применяются немедленно и не вызывают перезагрузку или drain.

    Каждое изменение оценивается по политике прерывания узла, которая может запускать одно или несколько из следующих действий:

    • Reboot: Выполнить drain и перезагрузить узел.
    • None: Прерывание не запускается; изменение применяется без дополнительных действий.
    • Drain: Выполнить drain узла без перезагрузки.
    • Restart: Перезапустить указанный сервис systemd.
    • DaemonReload: Перезагрузить все конфигурации units systemd.

    Пример: политика прерывания узла по умолчанию

    Ниже приведена конфигурация по умолчанию для ресурса MachineConfiguration cluster после установки:

    apiVersion: machineconfiguration.alauda.io/v1alpha1
    kind: MachineConfiguration
    metadata:
      name: cluster
    spec:
      defaultNodeDisruptionPolicySpecAction:
        files:
        - type: None
        units:
        - type: Reboot
      nodeDisruptionPolicy:
        sshkey:
          actions:
          - type: None

    Эта конфигурация означает:

    • Изменения файлов не вызывают никаких действий.
    • Изменения units systemd приводят к drain и перезагрузке узла.
    • Изменения SSH-ключей применяются без прерывания.

    Пример: настройка поведения для файлов

    Вы можете изменить действие по умолчанию для изменений файлов так, чтобы они вызывали перезагрузку:

    apiVersion: machineconfiguration.alauda.io/v1alpha1
    kind: MachineConfiguration
    metadata:
      name: cluster
    spec:
      defaultNodeDisruptionPolicySpecAction:
        files:
        - type: Reboot
        units:
        - type: Reboot
      nodeDisruptionPolicy:
        sshkey:
          actions:
          - type: None

    При такой конфигурации любое изменение управляемого файла приведёт к тому, что Machine Configuration Operator выполнит drain и перезагрузит затронутый узел.


    Пример: применение политики к конкретному файлу

    Вы также можете определить действия прерывания для конкретного пути к файлу. В следующем примере изменения в /usr/local/bin/myapp.sh не вызовут перезагрузку узла, а вместо этого перезагрузят конфигурацию systemd и перезапустят связанный сервис:

    apiVersion: machineconfiguration.alauda.io/v1alpha1
    kind: MachineConfiguration
    metadata:
      name: cluster
    spec:
      defaultNodeDisruptionPolicySpecAction:
        files:
        - type: Reboot
        units:
        - type: Reboot
      nodeDisruptionPolicy:
        files:
        - path: /usr/local/bin/myapp.sh
          actions:
          - type: DaemonReload
          - type: Restart
            restart:
              serviceName: myapp.service
        sshkey:
          actions:
          - type: None

    В этом случае при обновлении /usr/local/bin/myapp.sh Machine Configuration Operator перезагрузит все units systemd и перезапустит myapp.service — без drain или перезагрузки узла.