From 91b36ec307c7503f62947c9d7bc2c1b0eea0a257 Mon Sep 17 00:00:00 2001 From: my-git9 <76980726+my-git9@users.noreply.github.com> Date: Thu, 10 Mar 2022 08:47:35 +0800 Subject: [PATCH] [zh] Update ttlafterfinished.md (#32073) * Update ttlafterfinished.md Sync en doc about Automatic Clean-up for Finished Jobs * Update ttlafterfinished.md Adjust as suggested --- .../workloads/controllers/ttlafterfinished.md | 93 ++++++++----------- 1 file changed, 39 insertions(+), 54 deletions(-) diff --git a/content/zh/docs/concepts/workloads/controllers/ttlafterfinished.md b/content/zh/docs/concepts/workloads/controllers/ttlafterfinished.md index 291b88e0d7..0d02b7a04b 100644 --- a/content/zh/docs/concepts/workloads/controllers/ttlafterfinished.md +++ b/content/zh/docs/concepts/workloads/controllers/ttlafterfinished.md @@ -1,65 +1,54 @@ --- -title: 已完成资源的 TTL 控制器 +title: 已完成 Job 的自动清理 content_type: concept weight: 70 --- -{{< feature-state for_k8s_version="v1.21" state="beta" >}} +{{< feature-state for_k8s_version="v1.23" state="stable" >}} -TTL 控制器提供了一种 TTL 机制来限制已完成执行的资源对象的生命周期。 -TTL 控制器目前只处理 {{< glossary_tooltip text="Job" term_id="job" >}}, -可能以后会扩展以处理将完成执行的其他资源,例如 Pod 和自定义资源。 +TTL-after-finished {{}} 提供了一种 TTL 机制来限制已完成执行的资源对象的生命周期。 +TTL 控制器目前只处理 {{< glossary_tooltip text="Job" term_id="job" >}}。 - -此功能目前是 Beta 版而自动启用,并且可以通过 `kube-apiserver` 和 -`kube-controller-manager` 上的 -[特性门控](/zh/docs/reference/command-line-tools-reference/feature-gates/) -`TTLAfterFinished` 禁用。 -## TTL 控制器 +## TTL-after-finished 控制器 -TTL 控制器现在只支持 Job。集群操作员可以通过指定 Job 的 `.spec.ttlSecondsAfterFinished` +TTL-after-finished 控制器只支持 Job。集群操作员可以通过指定 Job 的 `.spec.ttlSecondsAfterFinished` 字段来自动清理已结束的作业(`Complete` 或 `Failed`),如 [示例](/zh/docs/concepts/workloads/controllers/job/#clean-up-finished-jobs-automatically) 所示。 -TTL 控制器假设资源能在执行完成后的 TTL 秒内被清理,也就是当 TTL 过期后。 -当 TTL 控制器清理资源时,它将做级联删除操作,即删除资源对象的同时也删除其依赖对象。 +TTL-after-finished 控制器假设作业能在执行完成后的 TTL 秒内被清理,也就是当 TTL 过期后。 +当 TTL 控制器清理作业时,它将做级联删除操作,即删除资源对象的同时也删除其依赖对象。 注意,当资源被删除时,由该资源的生命周期保证其终结器(Finalizers)等被执行。 -* 在资源清单(manifest)中指定此字段,以便 Job 在完成后的某个时间被自动清除。 -* 将此字段设置为现有的、已完成的资源,以采用此新功能。 -* 在创建资源时使用 [mutating admission webhook](/zh/docs/reference/access-authn-authz/extensible-admission-controllers/#admission-webhooks) - 动态设置该字段。集群管理员可以使用它对完成的资源强制执行 TTL 策略。 +* 在作业清单(manifest)中指定此字段,以便 Job 在完成后的某个时间被自动清除。 +* 将此字段设置为现有的、已完成的作业,以采用此新功能。 +* 在创建作业时使用 [mutating admission webhook](/zh/docs/reference/access-authn-authz/extensible-admission-controllers/#admission-webhooks) + 动态设置该字段。集群管理员可以使用它对完成的作业强制执行 TTL 策略。 * 使用 [mutating admission webhook](/zh/docs/reference/access-authn-authz/extensible-admission-controllers/#admission-webhooks) - 在资源完成后动态设置该字段,并根据资源状态、标签等选择不同的 TTL 值。 + 在作业完成后动态设置该字段,并根据作业状态、标签等选择不同的 TTL 值。 ## 警告 -### 更新 TTL 秒 +### 更新 TTL 秒数 -请注意,在创建资源或已经执行结束后,仍可以修改其 TTL 周期,例如 Job 的 +请注意,在创建 Job 或已经执行结束后,仍可以修改其 TTL 周期,例如 Job 的 `.spec.ttlSecondsAfterFinished` 字段。 但是一旦 Job 变为可被删除状态(当其 TTL 已过期时),即使您通过 API 增加其 TTL 时长得到了成功的响应,系统也不保证 Job 将被保留。 @@ -111,25 +100,21 @@ returns a successful API response. ### 时间偏差 {#time-skew} -由于 TTL 控制器使用存储在 Kubernetes 资源中的时间戳来确定 TTL 是否已过期, -因此该功能对集群中的时间偏差很敏感,这可能导致 TTL 控制器在错误的时间清理资源对象。 +由于 TTL-after-finished 控制器使用存储在 Kubernetes 资源中的时间戳来确定 TTL 是否已过期, +因此该功能对集群中的时间偏差很敏感,这可能导致 TTL-after-finished 控制器在错误的时间清理资源对象。 -在 Kubernetes 中,需要在所有节点上运行 NTP(参见 -[#6159](https://github.com/kubernetes/kubernetes/issues/6159#issuecomment-93844058)) -以避免时间偏差。时钟并不总是如此正确,但差异应该很小。 +时钟并不总是如此正确,但差异应该很小。 设置非零 TTL 时请注意避免这种风险。 ## {{% heading "whatsnext" %}}