Настройте главный сервер API для проверки узла кордона и уничтожения, если у него нет запущенных заданий

Команда,

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

  1. кордонный узел [больше нет планирования]
  2. ждать завершения работы
  3. уничтожить

Есть ли способ, которым я могу автоматизировать это, используя параметры самой K8s вместо того, чтобы писать какой-нибудь bash-скрипт для выполнения этих проверок каждый раз, потому что мы не знаем, когда завершатся pods. Итак, можем ли мы настроить главный сервер API для проверки узла кордона и уничтожения, если у него нет запущенных заданий?

1 ответ

Вы можете написать свое собственное приложение либо с помощью Go-клиента, Python-клиента или Java-клиента и в основном сделать это:

$ kubectl apply -f yourjob.yaml
$ kubectl cordon <nodename>
$ kubectl wait --for=condition=complete job/myjob
$ kubectl drain <nodename>
# Terminate your node if drain returns successfully

Если это частая схема, вы также можете использовать для этого пользовательский контроллер ( оператор) с определением пользовательского ресурса ( CRD). Вам нужно будет встроить код вашего приложения, который общается с сервером API.

Другие вопросы по тегам