k8s之Job和CronJob
# Job
# 什么是Job?
该对象是用来执行运行一段时间后会退出的任务。
# 使用Job
使用yaml描述Job对象,其中restartPolicy是重启策略,需要设定为OnFailure,代表着如果失败则重启,如果是正常执行完成退出,则不需要再次启动。默认的值是Always,会保持着该Pod总是运行的。
template下的Pod模板,Job通过该模板来创建Pod。
apiVersion: batch/v1
kind: Job
metadata:
name: echo-job
spec:
template:
spec:
restartPolicy: OnFailure
containers:
- image: busybox
name: echo-job
command: ["/bin/echo"]
args: ["hello", "world"]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
使用yaml文件创建Job,然后查看job的pod对象,会发现它的STATUS状态为Completed,因为该job正常完成结束退出了。
[root@k8s-worker1 zwf]# kubectl apply -f job.yaml -n zwf
job.batch/echo-job created
[root@k8s-worker1 zwf]# kubectl get pods -n zwf
NAME READY STATUS RESTARTS AGE
echo-job-45pmc 0/1 Completed 0 5s
1
2
3
4
5
6
2
3
4
5
6
再来看下该Completed的log,会发现已经输出了hello world
[root@k8s-worker1 zwf]# kubectl logs echo-job-45pmc -n zwf
hello world
1
2
2
Job的参数
activeDeadlineSeconds,设置 Pod 运行的超时时间。
backoffLimit,设置 Pod 的失败重试次数。
为什么不直接在Pod上实现,而要新创建对象Job?
保持单一原则,将业务特性与容器管理分开。
# CronJob
# 什么是ConJob?
该对象用于定时任务。
# 使用CronJob
使用Yaml描述CronJob对象,会发现该对象多了一个schedule字段,这个是用来描述定时任务周期的规则,jobTemplate是Job对象的模板,也就是在定时周期内不断创建Job对象来达到定时任务的目的,也是一种组合的方式。
apiVersion: batch/v1
kind: CronJob
metadata:
name: echo-cj
spec:
schedule: '*/1 * * * *'
jobTemplate:
spec:
template:
spec:
restartPolicy: OnFailure
containers:
- image: busybox
name: echo-cj
imagePullPolicy: IfNotPresent
command: ["/bin/echo"]
args: ["hello", "world"]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
使用定义的Yaml创建CronJob
[root@k8s-worker1 zwf]# kubectl apply -f cronjob.yaml -n zwf
cronjob.batch/echo-cj created
[root@k8s-worker1 zwf]# kubectl get cronjob -n zwf
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE
echo-cj */1 * * * * False 1 1s 2m24s
1
2
3
4
5
6
2
3
4
5
6
等待3分钟后,创建了3个CronJob的Pod,并且通过AGE可以发现是每分钟创建一个。
[root@k8s-worker1 zwf]# kubectl get pods -n zwf
NAME READY STATUS RESTARTS AGE
echo-cj-27698578-jtfxm 0/1 Completed 0 2m23s
echo-cj-27698579-cdzxg 0/1 Completed 0 83s
echo-cj-27698580-rfp72 0/1 Completed 0 23s
1
2
3
4
2
3
4
上次更新: 2023/01/15, 20:17:10