- Job: 负责处理任务,即仅执行一次的任务,它保证批处理任务的一个或多个Pod成功结束。
- CronJob: 则就是在Job上加上了时间调度。
我们用Job这个资源对象来创建一个任务,我们定一个Job来执行一个倒计时的任务,定义YAML文件:
$ cat hello.yaml
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: hello
namespace: test
spec:
schedule: "*/5 * * * *"
jobTemplate:
spec:
template:
spec:
containers:
- name: hello
image: images.xxxxxxxx.com/test/hello:v1
restartPolicy: OnFailure
创建并查看任务状态
$ kubectl apply -f hello.yaml
cronjob.batch/hello created
$ kubectl get -n test cronjob
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE
hello */5 * * * * False 0 4m15s 39m
#刚创建还没有活跃的工作,也没有计划任何工作
然后,每隔五分钟执行kubectl get cronjob 查看已执行完的任务,发现每五分钟则会创建一个Pod,可以使用以下命令来控制成功Pod和失败Pod个数。
.spec.successfulJobsHistoryLimit: #成功完成的作业保存多少个,默认为3
.spec.failedJobsHistoryLimit: #失败的作业保存多少个,默认为1
注:实测k8s v1.13.5上有默认值,v1.11.6则不存在
$ kubectl get -n test job
NAME COMPLETIONS DURATION AGE
hello-1567045500 1/1 2s 13m
hello-1567045800 1/1 2s 8m54s
hello-1567046100 1/1 2s 3m54s
如果不需要这个CronJob,删除即可:
$ kubectl delete -f hello.yaml
标签:kubectl,Cronjob,Job,hello,任务,test,定时,spec
From: https://www.cnblogs.com/dagongzhe/p/16870360.html