Roy学Kubernetes(14):控制器之CronJob
CronJob是基于时间的任务,和linux系统中的计划任务crontab同理。一个CronJob对象就像一行crontab(cron表)文件。 它以给定的时间表定期运行指定的任务,语法与crontab格式相同。(在Kubernetes1.4版本名为ScheduledJob,从1.5版本开始改成CronJob)
它的常用场景和crontab一样:
- 在指定时间点执行Job
- 周期性执行Job
创建CronJob
cronjob.yaml
1 | apiVersion: batch/v1beta1 |
创建
1 | [root@node1 ~]# kubectl create -f cronjob.yaml |
也可以使用Kubectl run来创建一个CronJob,而不需要写yaml配置文件
1 | [root@node1 ~]# kubectl run hello --schedule="*/1 * * * *" --restart=OnFailure --image=busybox -- /bin/sh -c "date; echo Hello from the Kubernetes cluster" |
创建后获取CronJob状态信息
1 | [root@node1 ~]# kubectl get cronjob hello |
上述状态表示即没有active的Job,也没有被调度的Job。此时稍等约一分钟再看:
1 | [root@node1 ~]# kubectl get jobs --watch |
1 | [root@node1 ~]# kubectl get cronjob hello |
LAST-SCHEDULE
表示此Job在指定的时间点已被调度。此时可查看最近一次调度的Pod执行的结果输出:
1 | [root@node1 ~]# pods=$(kubectl get pods --selector=job-name=hello-4111706356 --output=jsonpath={.items..metadata.name}) |
删除CronJob
1 | [root@node1 ~]# kubectl delete cronjob hello |
这将会终止正在创建的Job。但运行中的Job不会被终止,包括它的Pod。为了清理这些Job和Pod,需要列出该CronJob创建的全部Job并删除它们:
1 | [root@node1 ~]# kubectl get jobs |
删除当前namespace下的所有job,可以使用kubectl delete jobs --all
来操作。
- 本文链接:http://www.whyvv.top/k8s14.html
- 版权声明:版权所有,转载请注明出处。
分享