Я начинаю в Kubernetes, и у меня есть вопрос о CronJob, в моем проекте мне нужно, чтобы задание cron запускалось каждую минуту. Во многих руководствах люди используют ресурс CronJob, я настраиваю его и вижу, что каждую минуту создается модуль для выполнения команды, который затем уничтожается, причем на неопределенный срок. Интересно, интересно ли в моем случае (каждую минуту) использовать ресурс Kubernetes CronJob, зная, что каждую минуту под создается путем извлечения изображения и т. Д. Я считаю этот процесс немного громоздким, не лучше ли иметь простой pod, выполняющий cron традиционным способом?
Модуль развертывания или CronJob для ежеминутной работы?
Ответы (2)
Посмотрите на выполнение cronjob внутри модуля вместо kubernetes CronJob. Таким образом, вам не нужно беспокоиться о запуске нового модуля каждую минуту.
Я предпочитаю запускать cronjobs как рабочую нагрузку Kubernetes с использованием CronJobs. По сравнению с запуском задания внутри одного модуля, запуск как CronJob позволяет Kubernetes эффективно управлять ресурсами. Кроме того, вы можете легко масштабировать количество заданий, и вы не ограничены одним узлом.
Однако вам придется иметь дело с неудачными заданиями, перекрывающимися заданиями, идемпотентностью и т. Д., Которые вы должны решить с помощью любого планировщика.
Кроме того, вы можете рассмотреть возможность использования специальных модулей в зависимости от вашего бизнес-сценария. Если вы реализуете издателя-подписчика, тогда имеет смысл запускать выделенные контейнеры. Для простых заданий CronJobs должен работать.
Кстати, вам не нужно каждый раз беспокоиться о вытаскивании изображений. Вы можете указать imagePullPolicy как IfNotPresent.
Изображение извлекается только в том случае, если его еще нет локально.