k8s
Job的使用
文章目录
前言
- 使用job可以创建一个pod或者多个pod去执行任务。
- Job会记录已完成的Pod的数量,但完成的数量达到指定值时,这个Job就完成了。 以下主要是介绍job.spec的参数配置
一、job的yaml
apiVersion: batch/v1
kind: Job
metadata:
name: test-job
spec:
ttlSecondsAfterFinished: 5
activeDeadlineSeconds: 10
backoffLimit: 2
parallelism: 3
completions: 5
template:
metadata:
name: test-job
spec:
containers:
- name: test-job
image: centos # 镜像
command: ["/bin/sh", "-c", " echo ","123"]
imagePullPolicy: IfNotPresent
restartPolicy: Never
二、ttlSecondsAfterFinished
- 当设置了ttlSecondsAfterFinished
参数,job完成或者失败后都会在ttlSecondsAfterFinished所设置的时间后被清理。 - 假设ttlSecondsAfterFinished 设置成30。在job完成或者失败后30s,job就会被自动清除,包括job和job所管理的pod都会被清除
- 假设没有设置,job和job所管理的pod会一直存在,不管是失败还是成功。
- 不过好像有些k8s的版本ttlSecondsAfterFinished是不生效的,建议使用1.20以上的版本
三、activeDeadlineSeconds
- Job的超时时间,一旦一个Job运行的时间超出该限制,则Job失败,所有运行中的Pod会被结束并删除。
- 该配置指定的值必须是个正整数。不指定则不会超时。
- 但是经过我实验,job pod并不会自动删除,所以如果希望超时后pod会自动删除还是设置一下ttlSecondsAfterFinished
四、backoffLimit
-
允许执行失败的次数,默认值是6,0表示不允许执行失败。
-
如果Pod是restartPolicy为Nerver,则失败后会创建新的Pod,如果是OnFailed,则会重启Pod,不管是哪种情况,只要Pod失败一次就计算一次,而不是等整个Pod失败后再计算一个。
-
当失败的次数达到该限制时,整个Job随即结束,所有正在运行中的Pod都会被删除。
-
但是经过我实验,job
pod并不会自动删除,所以如果希望超时后pod会自动删除还是设置一下ttlSecondsAfterFinished
五、parallelism
- 并行运行的Pod的个数,默认值为1,假如设置为3,就会同时开启3个pod去执行任务
六、completions
- 完成该Job需要执行成功的Pod数
- 指定需要完成的数量,默认值为1,假设设置为3,需要有三个pod成功完成任务,这个job才算是完成
总结
以上是我对job的理解,不一定完全正确,可以作为参考