想要在Kubernetes上参数化cronjob调度



我有一个yaml。我想参数化kubernetes cronjob的时间表。在环境文件中,我声明JobFrequencyInMinutes:"10">

apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: scheduled-mongo-cronjob
spec:
schedule: "*/$(JobFrequencyInMinutes) * * * *"
concurrencyPolicy: "Forbid"
jobTemplate:
spec:
template:
spec:
containers:
- name: scheduled-mongo-cronjob
image: xxxx
env:
- name: JobFrequencyInMinutes
valueFrom:
configMapKeyRef:
key: JobFrequencyInMinutes
name: env-conf

当我应用上面的yaml时,我得到了一个错误。CronJob"scheduled mongo CronJob"无效:specschedule:无效值:"*/$(JobFrequencyInMinutes(***":无法从$(JobFrequencyInMinutes(:strconv解析int。Atoi:解析"$(JobFrequencyInMinutes(":无效语法

如果有其他方法可以实现这一点,请指导我。

这里的问题是,当CronJob被创建并且在作业本身内部时,环境变量将是可用的,但它无法创建,因为变量$JobFrequencyInMinutes在节点级别中不存在。

我想说的是,为了实现您想要做的事情,您需要在集群级别拥有一个环境变量。每当你想更新你的时间表时,你都需要为它设置一个新的值,然后重新创建你的CronJob。

声明方式似乎不起作用(通过您的YAML(,因此您需要使用命令式方式创建:

kubectl run scheduled-mongo-cronjob --schedule="*/$JobFrequencyInMinutes * * * *" --restart=OnFailure --image=xxxx

最新更新