Files
kuboard-press/learning/k8s-intermediate/workload/wl-job/auto-cleanup.md
huanqing.shao 74e4c05d51 Job
2019-10-31 22:05:40 +08:00

57 lines
2.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
vssueId: 151
layout: LearningLayout
description: Kubernetes中的Job对象将创建一个或多个Pod_并确保指定数量的Pod可以成功执行到进程正常结束_本文描述如何自动清理已经结束的Pod
meta:
- name: keywords
content: Kubernetes培训,K8S教程,K8S培训,Kubernetes Job
---
# Job的自动清理
<AdSenseTitle>
</AdSenseTitle>
系统中已经完成的 Job 通常是不在需要里的,长期在系统中保留这些对象,将给 apiserver 带来很大的压力。如果通过更高级别的控制器(例如 [CronJobs](../wl-cronjob/))来管理 Job则 CronJob 可以根据其中定义的基于容量的清理策略capacity-based cleanup policy自动清理Job。
## TTL 机制
**FEATURE STATE** `Kubernetes v1.12` <Badge type="warning">alpha</Badge>
除了 CronJob 之外TTL 机制是另外一种自动清理已结束Job`Completed``Finished`)的方式:
* TTL 机制由 [TTL 控制器](../wl-ttl/) 提供
* 在 Job 对象中指定 `.spec.ttlSecondsAfterFinished` 字段可激活该特性
当 TTL 控制器清理 Job 时TTL 控制器将删除 Job 对象,以及由该 Job 创建的所有 Pod 对象。
::: tip 删除Job
删除 Job 时,其生命周期函数将被触发,例如 finalizer
:::
参考例子:
``` sh {6}
apiVersion: batch/v1
kind: Job
metadata:
name: pi-with-ttl
spec:
ttlSecondsAfterFinished: 100
template:
spec:
containers:
- name: pi
image: perl
command: ["perl", "-Mbignum=bpi", "-wle", "print bpi(2000)"]
restartPolicy: Never
```
**字段解释 `ttlSecondsAfterFinished`**
* Job `pi-with-ttl` 的 `ttlSecondsAfterFinished` 值为 100在其结束 `100` 秒之后,将可以被自动删除
* 如果 `ttlSecondsAfterFinished` 被设置为 `0`,则 TTL 控制器在 Job 执行结束后,立刻就可以清理该 Job 及其 Pod
* 如果 `ttlSecondsAfterFinished` 值未设置,则 TTL 控制器不会清理该 Job
::: warning alpha
TTL 机制目前还是 alpha 状态FEATURE GATE 为 `TTLAfterFinished`。更多信息请参考 [TTL 控制器](../wl-ttl/)
:::