Можно ли заставить Kubernetes запускать задание на узле после его запуска и не запускать никакие модули до тех пор, пока это задание не будет завершено?
Моя первая идея состояла в том, чтобы использовать taints (начать узел с заражением, которое может выдержать только Job, затем удалить заражение, когда Job завершится). Однако я использую AWS EKS и хочу, если возможно, использовать функцию «управляемых узлов», которая не позволяет для указания порчи узлов. Он также не позволяет использовать сценарий начальной загрузки пользовательского экземпляра, что было моим другим вариантом.
Я использовал для решения этой проблемы нидхегг где я бы держал поды с «рабочей нагрузкой» вне узла до тех пор, пока драйвер графического процессора и начальная загрузка CNI не будут завершены
Отличие от указанного вами «без использования taints» заключается в том, что nidhogg динамически применяет и удаляет taints и не требует их установки во время подготовки узла.
Может потребоваться корректировка вашей рабочей нагрузки, чтобы знать о пороках, которые вызывает nidhogg будет применяться
Альтернативой является то, что задание, которое вы описываете, применяет метку к узлу, когда оно завершено (что можно сделать через serviceAccount
Токен, введенный в модуль), а затем используйте nodeSelector:
в рабочих нагрузках только для целевых узлов, имеющих эту метку