想要在 Kubernetes 上参数化 cronjob 计划
Want to parameterize cronjob schedule on Kubernetes
我有一个 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" 无效:spec.schedule:无效值:“*/$(JobFrequencyInMinutes) * * * *”:无法从 $(JobFrequencyInMinutes) 解析 int:strconv.Atoi:正在解析“ $(JobFrequencyInMinutes)”:语法无效
如果有任何其他方法可以实现此目的,请指导我。
这里的问题是环境变量仅在创建 CronJob 时可用并且在作业本身内部可用,但创建失败是因为节点级别不存在变量 $JobFrequencyInMinutes。
我想说的是,要实现您正在尝试做的事情,您需要在集群级别拥有一个环境变量。每当您想更新您的日程安排时,您都需要为其设置一个新值,然后重新创建您的 CronJob。
声明式方式似乎不起作用(通过您的 YAML),因此您需要使用命令式方式创建:
kubectl run scheduled-mongo-cronjob --schedule="*/$JobFrequencyInMinutes * * * *" --restart=OnFailure --image=xxxx
我有一个 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" 无效:spec.schedule:无效值:“*/$(JobFrequencyInMinutes) * * * *”:无法从 $(JobFrequencyInMinutes) 解析 int:strconv.Atoi:正在解析“ $(JobFrequencyInMinutes)”:语法无效
如果有任何其他方法可以实现此目的,请指导我。
这里的问题是环境变量仅在创建 CronJob 时可用并且在作业本身内部可用,但创建失败是因为节点级别不存在变量 $JobFrequencyInMinutes。
我想说的是,要实现您正在尝试做的事情,您需要在集群级别拥有一个环境变量。每当您想更新您的日程安排时,您都需要为其设置一个新值,然后重新创建您的 CronJob。
声明式方式似乎不起作用(通过您的 YAML),因此您需要使用命令式方式创建:
kubectl run scheduled-mongo-cronjob --schedule="*/$JobFrequencyInMinutes * * * *" --restart=OnFailure --image=xxxx