Job負責處理任務,即僅執行一次的任務,它保證批處理任務的一個或多個Pod成功結束。而CronJob則就是在Job上加上了時間調度。
1、job
apiVersion: batch/v1
kind: Job
metadata:
name: job-demo
spec:
template:
metadata:
name: job-demo
spec:
restartPolicy: Never
containers:
- name: counter
image: 192.168.100.89:80/busybox
command:
- "bin/sh"
- "-c"
- "for i in 9 8 7 6 5 4 3 2 1; do echo $i; done"
[root@k8s-node1 k8s]# kubectl create -f job-demo.yaml
job.batch/job-demo created
查看job
[root@k8s-node1 k8s]# kubectl get jobs
NAME COMPLETIONS DURATION AGE
job-demo 1/1 1s 6s
查看job運行日志
[root@k8s-node1 k8s]# kubectl logs jobs/job-demo
9
8
7
6
5
4
3
2
1
刪除job
kubectl delete jobs/job-demo
2、cronjob
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: cronjob-demo
spec:
successfulJobsHistoryLimit: 10
failedJobsHistoryLimit: 10
schedule: "*/1 * * * *"
jobTemplate:
spec:
template:
spec:
restartPolicy: OnFailure
containers:
- name: cronjob-demo
image: 192.168.100.89:80/busybox
args:
- "bin/sh"
- "-c"
- "for i in 10 9 8 7 6 5 4 3 2 1; do echo $i; done"
啟動
[root@k8s-node1 k8s]# kubectl apply -f cronjob-demo.yaml --record=true
cronjob.batch/cronjob-demo created
查看cronjob
[root@k8s-node1 k8s]# kubectl get cronjobs
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE
cronjob-demo */1 * * * * False 0 <none> 6s
過一分鍾
查看執行的job
[root@k8s-node1 k8s]# kubectl get jobs
NAME COMPLETIONS DURATION AGE
cronjob-demo-1567147500 1/1 2s 4s
job-demo 1/1 1s 45m
查看job日志
[root@k8s-node1 k8s]# kubectl logs jobs/cronjob-demo-1567147500
10
9
8
7
6
5
4
3
2
1
刪除cronjob
kubectl delete cronjob cronjob-demo