从ConfigMap读取Kubernetes CronJob的调度表达式

问题描述

我在Kubernetes中配置了10个以上的CronJob,它们都按预期运行。

现在我计划再添加20个CronJob。所有作业都从外部资源获取数据,对其进行处理并生成某种报告。

我想将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中指定计划。

看看用上方头盔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