Назад | Перейти на главную страницу

Запустите задание на новом узле перед запуском любых модулей (без использования taints)

Можно ли заставить Kubernetes запускать задание на узле после его запуска и не запускать никакие модули до тех пор, пока это задание не будет завершено?

Моя первая идея состояла в том, чтобы использовать taints (начать узел с заражением, которое может выдержать только Job, затем удалить заражение, когда Job завершится). Однако я использую AWS EKS и хочу, если возможно, использовать функцию «управляемых узлов», которая не позволяет для указания порчи узлов. Он также не позволяет использовать сценарий начальной загрузки пользовательского экземпляра, что было моим другим вариантом.

Я использовал для решения этой проблемы нидхегг где я бы держал поды с «рабочей нагрузкой» вне узла до тех пор, пока драйвер графического процессора и начальная загрузка CNI не будут завершены

Отличие от указанного вами «без использования taints» заключается в том, что nidhogg динамически применяет и удаляет taints и не требует их установки во время подготовки узла.

Может потребоваться корректировка вашей рабочей нагрузки, чтобы знать о пороках, которые вызывает nidhogg будет применяться


Альтернативой является то, что задание, которое вы описываете, применяет метку к узлу, когда оно завершено (что можно сделать через serviceAccount Токен, введенный в модуль), а затем используйте nodeSelector: в рабочих нагрузках только для целевых узлов, имеющих эту метку