我想做的是定期在每个Kubernetes节点上运行一些备份脚本。与只向每个节点的crontab添加脚本相反,我希望它在Kubernetes集群中运行。这是因为我会将备份存储在Kubernetes挂载到该节点的卷上。它与配置不同,但是可能是由Flex插件或awsElasticBlockStore
挂载的CIFS文件系统。
如果CronJob
能够模板化DaemonSet
(而不是将其固定为jobTemplate
)并且可以将DaemonSet
重新启动策略设置为OnFailure
。
我想避免为每个n
节点定义CronJobs
个不同的n
,然后通过定义nodeSelectors
将它们关联在一起,因为这样维护起来不太方便在节点计数动态变化的环境中。
这里讨论了我能看到的问题,但没有明确的结论:https://github.com/kubernetes/kubernetes/issues/36601
也许您有任何技巧或技巧来实现这一目标?
答案 0 :(得分:1)
您可以将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
答案 1 :(得分:1)
这仍然是使用CronJob
模板模仿DaemonSet
的最佳方法。即。在所有节点上运行crontab(基于节点选择器)
我不反对,但是对此我感到很沮丧,我需要一直运行这些吊舱。最好让k8s调度程序为我处理所有这一切。