Job负责处理任务,即仅执行一次的任务,它保证批处理任务的一个或多个Pod成功结束。而CronJob则就是在Job上加上了时间调度。

Job

创建YAML文件

vim test.yaml

apiVersion: batch/v1 
kind: Job
metadata:
name: job-demo
spec:
template:
metadata:
name: job-demo
spec:
restartPolicy: Never #JobRestartPolicy参数仅支持NeverOnFailure
containers:
- name: counter
image: busybox
command:
- "bin/sh"
- "-c"
- "for i in 9 8 7 6 5 4 3 2 1; do echo $i; done"

kubectl create -f test.yaml

kubect get jobs

kubectl get pods

kubectl logs <pods name>

CronJob

crontab的格式如下:
分 时 日 月 星期 要运行的命令 
第1列分钟0~59
第2列小时0~23
第3列日1~31
第4列月1~12
第5列星期0~7(0和7表示星期天)
第6列要运行的命令

创建YAML文件

vim test.yaml

apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: cronjob-demo
spec:
schedule: "*/1 * * * *"
jobTemplate:
spec:
template:
spec:
restartPolicy: OnFailure
containers:
- name: hello
image: busybox
args:
- "bin/sh"
- "-c"
- "for i in 9 8 7 6 5 4 3 2 1; do echo $i; done"

kubectl create -f test.yaml

kubectl get jobs --watch #观察调度

kubectl get pods

kubectl logs <pods name>