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

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

  • 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=
Скриншот

specialnodeaddlabel

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

specialnodelabels

Обратите внимание! Выполните необходимые действия по подготовке узла к перезапуску. После выполнения действий выполните 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=
Скриншот

specialnodeapplyasis

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

specialnodestatus

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

specialnodeunlabeled

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

×