如何更改Kubernetes cronjob的时间表或如何手动启动它?

SmC*_*lar 6 cron kubernetes kubectl

有一个简单的方法来改变一个kubernetes时间表的cronjob喜欢kubectl change cronjob my-cronjob "10 10 * * *"?或者任何其他方式而不需要做kubectl apply -f deployment.yml什么?后者在复杂的CI/CD设置中可能非常麻烦,因为通常不需要手动编辑部署yaml,尤其是在文件是在构建过程中从模板创建的情况下.

或者,有没有办法手动启动cronjob?例如,一项工作计划在22小时内开始,但是我想现在手动触发一次而不改变cron时间表(用于测试或初始运行)?

Rad*_*nka 11

您只需通过修补即可更新所选的资源字段

patch -h                     
Update field(s) of a resource using strategic merge patch, a JSON merge patch, or a JSON patch.           

JSON and YAML formats are accepted.

Please refer to the models in
https://htmlpreview.github.io/?https://github.com/kubernetes/kubernetes/blob/HEAD/docs/api-reference/v1/definitions.html
to find if a field is mutable.
Run Code Online (Sandbox Code Playgroud)

正如评论中提供的那样:

kubectl patch cronjob my-cronjob -p '{"spec":{"schedule": "42 11 * * *"}}'
Run Code Online (Sandbox Code Playgroud)

此外,在当前的kubectl版本中,要启动一次声明的cronjob的执行,您可以手动创建一个符合cronjob规范的作业

kubectl create job --from=cronjob/mycron
Run Code Online (Sandbox Code Playgroud)

  • 使用@SmCaterpillar建议,但必须修改为类似`kubectl补丁cronjob my-cronjob --patch'{“ spec”:{“ schedule”:“ 42 11 * * *”}}“ (4认同)

SmC*_*lar 10

最新版本的 k8s(从 1.10 开始)支持以下命令:

$ kubectl create job my-one-time-job --from=cronjobs/my-cronjob

来源是这个解决了k8s github 问题