Kubernetes: запустить задание при перезагрузке узла только один раз - PullRequest
0 голосов
/ 05 февраля 2020

Есть ли способ запустить задание только один раз после перезагрузки машины в Kubernetes?

Мысль о запуске cronjob в виде stati c pod, но, похоже, kubelet не нравится.

Изменить: на основе ответов, я хотел бы уточнить. Я смотрю на это только через родной Кубернетес. Я пишу cronjob в Kubernetes, но мне нужно, чтобы он запускался только один раз и после перезагрузки узла.

Ответы [ 3 ]

0 голосов
/ 06 февраля 2020

Если я вас правильно понимаю, вы должны рассмотреть возможность использования DaemonSet :

A DaemonSet гарантирует, что все (или некоторые) Узлы запускают копию Pod. Когда узлы добавляются в кластер, к ним добавляются модули. Когда узлы удаляются из кластера, эти модули удаляются. Удаление DaemonSet очистит созданные им модули.

Таким образом, вы можете создать контейнер с заданием, которое будет запускаться из DaemonSet.

. DaemonJob :

Это пример CompositeController, похожий на Job, за исключением того, что для каждого узла будет запланирован модуль, аналогичный DaemonSet.

Также есть:

Kubebuilder - это платформа для построения API-интерфейсов Kubernetes с использованием настраиваемого ресурса определения (CRD).

и:

Metacontroller является дополнением для Kubernetes, что облегчает написание и развертывание пользовательских контроллеров в виде простых сценариев.

Но, по моему мнению, первый вариант, который я предоставил, будет проще реализовать.

Пожалуйста, дайте мне знать, если это помогло.

0 голосов
/ 06 февраля 2020

Рассмотрите возможность использования CronJob для этого. Он принимает тот же формат, что и обычный планировщик cron на linux. Помимо обычного формата (минуты / часа / дня месяца / месяца / дня недели), который широко используется для указания расписания, планировщик cron также позволяет использовать @reboot. Эта директива, сопровождаемая абсолютным путем к сценарию, заставит его работать при загрузке машины.

0 голосов
/ 06 февраля 2020

Не уверен, что ваша платформа.

Например, в AWS экземпляр ec2 имеет user_data (https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/user-data.html)

Он будет запускать команды на Ваш экземпляр Linux / Windows при запуске

Вы можете найти аналогичные решения для других облачных провайдеров или локальных серверов.

...