首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这能安排CronJob在每个Kubernetes节点上执行吗?

这能安排CronJob在每个Kubernetes节点上执行吗?
EN

Stack Overflow用户
提问于 2019-04-29 10:22:59
回答 2查看 5.1K关注 0票数 8

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

如果CronJob能够模板DaemonSet (而不是将其修改为jobTemplate),并且有可能将DaemonSet重新启动策略设置为OnFailure,那就太好了。

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

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

也许你有什么技巧或技巧来达到这个目的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-29 11:25:45

您可以在下面的bash脚本中使用DaemonSet:

代码语言:javascript
复制
  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
票数 3
EN

Stack Overflow用户

发布于 2022-05-18 09:18:04

我知道我派对迟到了,

第一选择:

使用topologySpreadConstraints运行多个作业荚,使用并行在所有节点上扩展/调度吊舱。

代码语言:javascript
复制
apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: mycronjob
  labels:
    jobgroup: parallel
spec:
  schedule: "*/5 * * * *"
  successfulJobsHistoryLimit: 0
  failedJobsHistoryLimit: 0
  jobTemplate:
    spec:
      template:
        metadata:
          name: kubejob
          labels:
            jobgroup: parallel
        spec:
          topologySpreadConstraints:
            - maxSkew: 2
              topologyKey: kubernetes.io/hostname
              whenUnsatisfiable: DoNotSchedule
              labelSelector:
                matchLabels:
                  jobgroup: parallel
          containers:
          - name: mycron-container
            image: alpine
            imagePullPolicy: IfNotPresent
            command: ['sh', '-c', 'echo Job Pod is Running ; sleep 10']
          restartPolicy: OnFailure
          terminationGracePeriodSeconds: 0
      parallelism: 5
  concurrencyPolicy: Allow

选项二:

使用cronjob,您可以应用守护进程的YAML模板、set并在一定时间后删除它,这在所有节点上都是理想的作业。另外,如果一个自定义的停靠映像在deamon集中运行,那么一旦执行完成,它也可以完成。

额外

我建议您也检查一下这个CRD:https://github.com/AmitKumarDas/metac/tree/master/examples/daemonjob

阅读更多关于CRD:https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/的信息

您可以编写自己的自定义资源,并将其添加到库中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55901375

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档