From bd811a44524793081e4eb715918b092b5636ca2a Mon Sep 17 00:00:00 2001 From: SataQiu Date: Sun, 11 Aug 2019 20:41:11 +0800 Subject: [PATCH] zh-trans: add content/zh/docs/concepts/workloads/controllers/ttlafterfinished.md (#15783) --- .../workloads/controllers/ttlafterfinished.md | 120 ++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 content/zh/docs/concepts/workloads/controllers/ttlafterfinished.md diff --git a/content/zh/docs/concepts/workloads/controllers/ttlafterfinished.md b/content/zh/docs/concepts/workloads/controllers/ttlafterfinished.md new file mode 100644 index 0000000000..def3823e26 --- /dev/null +++ b/content/zh/docs/concepts/workloads/controllers/ttlafterfinished.md @@ -0,0 +1,120 @@ +--- +reviewers: +- janetkuo +title: 已完成资源的 TTL 控制器 +content_template: templates/concept +weight: 65 +--- + + +{{% capture overview %}} + +{{< feature-state for_k8s_version="v1.12" state="alpha" >}} + + +TTL 控制器提供了一种 TTL 机制来限制已完成执行的资源对象的生命周期。TTL 控制器目前只处理[作业](/docs/concepts/workloads/controllers/jobs-run-to-completion/),可能以后会扩展以处理将完成执行的其他资源,例如 Pod 和自定义资源。 + + +Alpha 免责声明:此功能目前是 alpha 版,可以通过[feature gate](/docs/reference/command-line-tools-reference/feature-gates/) `TTLAfterFinished` 启用。 + + +{{% /capture %}} + + +{{% capture body %}} + + +## TTL 控制器 + + +TTL 控制器现在只支持 Jobs。集群操作员可以通过指定 Job 的 `.spec.ttlSecondsAfterFinished` 字段来自动清理已结束的作业(“完成”或“失败”),就像下边的[示例](/docs/concepts/workloads/controllers/jobs-run-to-completion/#clean-up-finished-jobs-automatically)。 + +TTL 控制器假设资源能在执行完成后的 TTL 秒内被清理,也就是当 TTL 过期后。当 TTL 控制器清理资源时,它将做级联删除,即删除资源对象的同时也删除其依赖对象。注意,当资源被删除时,由该资源的生命周期保证其终结器(finalizers)等被执行。 + + +可以随时设置 TTL 秒。以下是设置 Job 的 `.spec.ttlSecondsAfterFinished` 字段的一些示例: + + +* 在资源清单(manifest)中指定此字段,以便作业在完成后的某个时间被自动清除。 +* 将此字段设置为存在的、已完成的资源,以采用此新功能。 +* 在资源创建时使用 [mutating admission webhook](/docs/reference/access-authn-authz/extensible-admission-controllers/#admission-webhooks) 动态设置该字段。集群管理员可以使用它对完成的资源强制执行 TTL 策略。 +* 使用 [mutating admission webhook](/docs/reference/access-authn-authz/extensible-admission-controllers/#admission-webhooks) 在资源完成后动态设置该字段,并根据资源状态、标签等选择不同的 TTL 值。 + + +## 警告 + + +### 更新 TTL 秒 + + +请注意,在创建资源后或已经执行结束后,仍可以修改其 TTL 周期,例如作业的 `.spec.ttlSecondsAfterFinished` 字段。但是,一旦作业变为可被删除状态(当其 TTL 已过期时),即使您通过 API 扩展其 TTL 时长得到了成功的响应,系统也不保证作业将被保留。 + + +### 时间偏差 + + +由于 TTL 控制器使用存储在 Kubernetes 资源中的时间戳来确定 TTL 是否已过期,因此该功能对集群中的时间偏差很敏感,这可能导致 TTL 控制器在错误的时间清理资源对象。 + + +在 Kubernetes 中,需要在所有节点上运行 NTP(参见[#6159](https://github.com/kubernetes/kubernetes/issues/6159#issuecomment-93844058))以避免时间偏差。时钟并不总是如此正确,但差异应该很小。设置非零 TTL 时请注意这种风险。 + +{{% /capture %}} + +{{% capture whatsnext %}} + + +[自动清理作业](/docs/concepts/workloads/controllers/jobs-run-to-completion/#clean-up-finished-jobs-automatically) + + +[设计文档](https://github.com/kubernetes/community/blob/master/keps/sig-apps/0026-ttl-after-finish.md) + +{{% /capture %}}