从 ConfigMap 读取 Kubernetes CronJob 的调度表达式
Read schedule expression of Kubernetes CronJob from ConfigMap
我在 Kubernetes 中配置了超过 10 个 CronJobs,并且都按预期正常工作。
现在我计划再添加 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 for that and specify the schedules in 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
我在 Kubernetes 中配置了超过 10 个 CronJobs,并且都按预期正常工作。
现在我计划再添加 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 for that and specify the schedules in 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