Работа Cron как программа или родной путь k8s - PullRequest
2 голосов
/ 16 апреля 2019

Мне нужно создать задания Cron на K8S.
некоторые задания выполняются каждую минуту, некоторые - каждые 5 минут (24/7)

Для выполнения этих заданий необходимо выполнить rest call (получить) некоторые компоненты и проверить доступность и, если что-то не так (опубликовать), позвонить в другую систему

Для решения этой задачи в настоящее время я вижу два подхода

  1. Создать кроншоб k8s - который является нативным k8s CRD и использовать для него shell script, https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/

PROS использует собственный способ K8S для решения такой проблемы

CONS - очень сложно отладить, отладка журналов и т. Д.

  1. Создать задание k8s / cronjob - выполнить программу Golang , которая будет использовать следующую библиотеку в качестве cronjob

PROS - отладка, ведение журнала и т. Д., https://github.com/robfig/cron

CONS - создать абстракцию ...

Любое предложение, рекомендация, который лучше использовать, если мне нужен полный контроль над этими заданиями

1 Ответ

3 голосов
/ 17 апреля 2019

Я бы подошел к этой проблеме в несколько этапов.

Сначала напишите программу, которая выполняет вызовы REST, проверяет результат, возможно отправляет предупреждение и завершает работу.Вы можете написать эту программу на любом языке или наборе инструментов, которые вам нравятся.Если вам удобно в Go, отлично;Я мог бы сам выбрать Python;это было бы возможно как сценарий оболочки, но, вероятно, более неловко, чем многие альтернативы. Создайте эту программу полностью независимо от Kubernetes. Протестируйте ее столько, сколько вам нужно, чтобы убедить себя, что она делает то, что вы хотите.

После того, как вы запустили программу опроса REST, и толькозатем встроите его в образ Docker;отправить его в реестр;и создать ресурс CronJob Kubernetes, который запускает его по расписанию.

Учитывая то, как вы описали задачу, я бы не стал писать специализированную программу только для репликации встроенного в Kubernetesзапланированный бегун задачи.Вы могли бы;Я бы разработал его так же, как и выше, но использовал бы развертывание вместо CronJob;но, вероятно, путь CronJob и проще, и надежнее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...