# Job的终止和清理
当 Job 完成后:
- 将不会创建新的 Pod
- 已经创建的 Pod 也不会被清理掉。此时,您仍然可以继续查看已结束 Pod 的日志,以检查 errors/warnings 或者其他诊断用的日志输出
- Job 对象也仍然保留着,以便您可以查看该 Job 的状态
- 由用户决定是否删除已完成的 Job 及其 Pod
- 可通过
kubectl
命令删除 Job,例如:kubectl delete jobs/pi
或者kubectl delete -f https://kuboard.cn/statics/learning/job/job.yaml
- 删除 Job 对象时,由该 Job 创建的 Pod 也将一并被删除
- 可通过
Job 通常会顺利的执行下去,但是在如下情况可能会非正常终止:
- 某一个 Pod 执行失败(且
restartPolicy=Never
) - 或者某个容器执行出错(且
restartPolicy=OnFailure
)- 此时,Job 按照 处理Pod和容器的失败 中
.spec.bakcoffLimit
描述的方式进行处理 - 一旦重试次数达到了
.spec.backoffLimit
中的值,Job 将被标记为失败,且尤其创建的所有 Pod 将被终止
- 此时,Job 按照 处理Pod和容器的失败 中
- Job 中设置了
.spec.activeDeadlineSeconds
。该字段限定了 Job 对象在集群中的存活时长,一旦达到.spec.activeDeadlineSeconds
指定的时长,该 Job 创建的所有的 Pod 都将被终止,Job 的 Status 将变为type:Failed
、reason: DeadlineExceeded
TIP
Job 中 .spec.activeDeadlineSeconds
字段的优先级高于 .spec.backoffLimit
。因此,正在重试失败 Pod 的 Job,在达到 .spec.activeDeadlineSecondes
时,将立刻停止重试,即使 .spec.backoffLimit
还未达到。
例如:
apiVersion: batch/v1
kind: Job
metadata:
name: pi-with-timeout
spec:
backoffLimit: 5
activeDeadlineSeconds: 100
template:
spec:
containers:
- name: pi
image: perl
command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
restartPolicy: Never
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
注意
Job 中有两个 activeDeadlineSeconds: .spec.activeDeadlineSeconds
和 .spec.template.spec.activeDeadlineSeconds
(参考 Pod)。请不要混淆了
免费答疑
微信群
微信扫码 进群发广告者死全家...
赞赏
微信扫码
← 处理Pod和容器的失败 Job的自动清理 →