我在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
而且他们的时间表是there,there和there。关于kubernetes - 从ConfigMap读取Kubernetes CronJob的调度表达式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/63619195/