【容器应用系列教程】Kubernetes的Job管理
【容器应用系列教程】Kubernetes的Job管理
一、Job的分类
job
- 类似于一次性任务,创建
Pod
临时运行一次任务,任务完成后Pod
为complete
状态 - 应用场景:适用于运行测试的任务
- 类似于一次性任务,创建
cronJob
- 类似于周期性计划任务,创建
Pod
以周期性运行某个任务,例如数据库备份等 - 通过和系统一样的
crontab
时间进行任务调度
- 类似于周期性计划任务,创建
二、Job
1.创建Job
注意:
Job
资源创建时,restartPolicy
只支持Never
、OnFailure
,不支持Always
避免进入死循环
[root@k8s-master opt]# vim job.yml
apiVersion: batch/v1
kind: Job
metadata:
name: test-job
namespace: wordpress
spec:
template:
metadata:
name: test-job
spec:
restartPolicy: Never
containers:
- name: test-job
image: centos:7
imagePullPolicy: IfNotPresent
command:
- "/bin/bash"
- "-c"
- "for i in 1 2 3 4; do echo $i; done"
[root@k8s-master opt]# kubectl create -f job.yml
job.batch/test-job created
查看Pod
日志
循环正常执行
[root@k8s-master opt]# kubectl logs test-job-s7m2h -n wordpress
1
2
3
4
查看Pod
状态
可以看到
Pod
处于Completed
状态
[root@k8s-master opt]# kubectl get pod -n wordpress
NAME READY STATUS RESTARTS AGE
test-job-s7m2h 0/1 Completed 0 3s
三、cronJob
- 类似于周期性计划任务,创建
Pod
以周期性运行某个任务,例如数据库备份等 - 通过和系统一样的
crontab
时间进行任务调度
1.创建cronJob
资源
[root@k8s-master opt]# cat cronjob.yml
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: test-cronjob
namespace: wordpress
spec:
successfulJobsHistoryLimit: 3 #最多存在3个
failedJobsHistoryLimit: 2 #最多允许创建失败2个
schedule: "*/1 * * * *" #每1分钟执行一次
jobTemplate:
spec:
template:
metadata:
name: test-cronjob
spec:
restartPolicy: OnFailure #重启策略为,容器异常退出的时候,触发重启
containers:
- name: test-cronjob
image: centos:7
imagePullPolicy: IfNotPresent
command:
- "/bin/sh"
- "-c"
- "for i in 9 8 7 6 5; do echo $i; done"
successfulJobsHistoryLimit
- 设置最多记录执行成功的次数
0
表示不记录- 默认会记录成功的所有,避免数量过多,建议设置该值
failedJobsHistoryLimit
- 设置最多记录失败的次数
0
表示不记录- 默认会记录失败的所有,避免数量过多,建议设置该值
2.查看cronJob
[root@k8s-master opt]# kubectl get cronjob -n wordpress
NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE
test-cronjob */1 * * * * False 0 53s 5m47s
3.查看Pod
[root@k8s-master opt]# kubectl get pod -n wordpress
NAME READY STATUS RESTARTS AGE
test-cronjob-1686655500-fxngl 0/1 Completed 0 2m52s
test-cronjob-1686655560-4cq5n 0/1 Completed 0 111s
test-cronjob-1686655620-fg8kb 0/1 Completed 0 51s
[root@k8s-master opt]# kubectl logs test-cronjob-1686655560-4cq5n -n wordpress
9
8
7
6
5
每隔1分钟就创建一个,最多存在3个
[root@k8s-master opt]# kubectl get pod -n wordpress
NAME READY STATUS RESTARTS AGE
test-cronjob-1686655560-4cq5n 0/1 Completed 0 3m1s
test-cronjob-1686655620-fg8kb 0/1 Completed 0 2m1s
test-cronjob-1686655680-56tdd 0/1 Completed 0 61s
test-cronjob-1686655740-c88ln 0/1 ContainerCreating 0 1s
[root@k8s-master opt]# kubectl get pod -n wordpress
NAME READY STATUS RESTARTS AGE
test-cronjob-1686655620-fg8kb 0/1 Completed 0 2m12s
test-cronjob-1686655680-56tdd 0/1 Completed 0 72s
test-cronjob-1686655740-c88ln 0/1 Completed 0 12s
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 WangShengJJのblog!