问题描述
我在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