Можно ли запланировать выполнение CronJob на каждом из узлов Kubernetes? - PullRequest
3 голосов
/ 29 апреля 2019

Я хотел бы периодически запускать несколько сценариев резервного копирования на каждом из узлов Kubernetes. Я хочу, чтобы он работал внутри кластера Kubernetes, в отличие от простого добавления скрипта в crontab каждого узла. Это потому, что я буду хранить резервную копию на томе, смонтированном на узле Kubernetes. Он отличается от конфигурации, но это может быть файловая система CIFS, смонтированная плагином Flex, или awsElasticBlockStore.

Было бы идеально, если бы CronJob мог шаблонировать DaemonSet (вместо того, чтобы фиксировать его как jobTemplate), и была бы возможность установить DaemonSet политику перезапуска на OnFailure.

Я бы хотел избежать определения n различных CronJobs для каждого из n узлов, а затем связать их вместе, определив nodeSelectors, так как это будет не очень удобно поддерживать в среде, где количество узлов изменяется динамически.

Что я вижу, проблема обсуждалась здесь без какого-либо четкого заключения: https://github.com/kubernetes/kubernetes/issues/36601

Может быть, у вас есть какие-нибудь хитрости или хитрости для этого?

1 Ответ

2 голосов
/ 29 апреля 2019

Вы можете использовать DaemonSet со следующим скриптом bash:

  while :; do
   currenttime=$(date +%H:%M)
   if [[ "$currenttime" > "23:00" ]] || [[ "$currenttime" < "23:05" ]]; then
     do_something
   else
     sleep 60
   fi
   test "$?" -gt 0 && notify_failed_job
  done
...