我在Kubernetes中配置了10个以上的CronJob,并且所有CronJob都能按预期正常工作。
现在,我计划再添加20个CronJobs。所有作业都从外部资源获取数据,对其进行处理并生成某种报告。
我想将CronJobs的调度表达式配置为ConfigMap。例如,

kind: ConfigMap
apiVersion: v1
metadata:
  name: scheduler-config
  namespace: test
data:
  job1.schedule.expression: */1 * * * *
  job2.schedule.expression: */5 * * * *
  job3.schedule.expression: */30 * * * *
  job4.schedule.expression: 0 1 * * *
  job5.schedule.expression: 0 0 * * THU
我想使其尽可能灵活一些,例如,如果我用新的表达式更新ConfigMap,则CronJob应该用新的调度表达式更新,而下一次它应按照ConfigMap中的新表达式值运行。

最佳答案

正如我已经在评论中提到的
据我所知ConfigMap用于设置容器内的环境变量或作为卷安装。我认为您不能使用configmap在cronjob中设置时间表。

作为替代方案,您可以使用helm cronjobs并在values.yaml中指定计划。
看一下下面的 Helm cronjobs创建的cronjobs。

kubectl get cronjob
NAME                     SCHEDULE      SUSPEND   ACTIVE    LAST SCHEDULE   AGE
cold-fly-hello-env-var   * * * * *     False     0         23s             1m
cold-fly-hello-ubuntu    */5 * * * *   False     0         23s             1m
cold-fly-hello-world     * * * * *     False     0         23s             1m
而且他们的时间表是theretherethere

关于kubernetes - 从ConfigMap读取Kubernetes CronJob的调度表达式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/63619195/

10-15 20:01