Защитить узлы от автоматического перезапуска

В Штурвале предусмотрен механизм автоматического перезапуска узлов в случаях изменения конфигурации узлов (NCI), обновления кластера. Политику дрейна и перезагрузки задаёт оператор shturval-node-config. При автоматическом перезапуске узла выполняются действия:

  • Cordon;
  • Drain;
  • Reboot.

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

Последовательность действий будет такой:

  1. Установите запрет на drain узлов.
  2. Внесите необходимые изменения.
  3. Проверьте, что конфигурация узла получила condition reboot required.
  4. Установите разрешение применять изменения без drain узла поверх запрета на drain.
  5. Дождитесь перезагрузки узла или применения конфигурации.
  6. Снимите разрешение применять изменения без drain узла.

Команды необходимо выполнять, прописывая название узла вместо my-special-node.

  1. Для запрета Drain узла установите лейбл node.shturval.tech/disable-drain с помощью команды:
Команда — иллюстрация
kubectl label node my-special-node node.shturval.tech/disable-drain=
Скриншот интерфейса платформы

Страница узла: установка лейбла disable-drain

  1. Для проверки установки лейбла выполните команду:
Команда — иллюстрация
kubectl get node my-special-node -o jsonpath='{.metadata.labels}' | jq -r
Скриншот интерфейса платформы

Вывод labels узла после установки disable-drain

Обратите внимание! Выполните необходимые действия по подготовке узла к перезапуску. После выполнения действий выполните drain. Лейбл `disable-drain` блокирует только автоматический drain узла.
  1. Установите разрешение для применения изменений с помощью лейбла node.shturval.tech/apply-as-is.
Обратите внимание! Лейбл `apply-as-is` разрешает немедленное применение изменений без проверки, был ли проведен drain узла.
Команда — иллюстрация
kubectl label node my-special-node node.shturval.tech/apply-as-is=
Скриншот интерфейса платформы

Установка лейбла apply-as-is на странице узла

  1. Проверьте, что ресурс NodeConfig узла (nodeconfig) применён и имеет статус ready=true:
Команда — иллюстрация
kubectl get nodeconfig my-special-node -o jsonpath='{.status.ready}'
Скриншот интерфейса платформы

Condition RebootRequired в статусе узла

  1. Обязательно снимите лейбл node.shturval.tech/apply-as-is с узла для отключения разрешения на безусловное применение изменений на узел, выполнив команду:
Команда — иллюстрация
kubectl label node my-special-node node.shturval.tech/apply-as-is-
Скриншот интерфейса платформы

Снятие лейбла disable-drain на странице узла

Обратите внимание! На вашем узле остался установленным лейбл ```node.shturval.tech/disable-drain```, блокирующий Drain узла.