6

我想做的是定期在每个 Kubernetes 节点上运行一些备份脚本。我希望它在 Kubernetes 集群中运行,而不是仅将脚本添加到每个节点的 crontab。这是因为我会将备份存储在 Kubernetes 挂载到节点的卷上。它与配置不同,但可能是 Flex 插件挂载的 CIFS 文件系统或awsElasticBlockStore.

如果CronJob能够进行模板化DaemonSet(而不是将其固定为jobTemplate)并且有可能将DaemonSet重启策略设置为OnFailure.

我想避免为每个节点定义n不同的节点,然后通过定义将它们关联在一起,因为在节点计数动态变化的环境中维护起来不太方便。CronJobsnnodeSelectors

我能看到的问题在这里讨论,没有任何明确的结论:https ://github.com/kubernetes/kubernetes/issues/36601

也许您有任何技巧或技巧来实现这一目标?

4

2 回答 2

2

您可以将 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
于 2019-04-29T11:25:45.790 回答
2

这仍然是CronJob使用DaemonSet模板模仿的最佳方式吗?IE。在所有节点上运行 crontab(基于节点选择器)

我并不反对它,但我需要一直运行这些 pod 真是太可惜了。让 k8s 调度程序为我处理这一切会很好。

于 2020-02-27T16:25:00.287 回答