概念

概念
概念模板示例

Edit This Page

已完成资源的 TTL 控制器

FEATURE STATE: Kubernetes v1.12 alpha

TTL 控制器提供了一种 TTL 机制来限制已完成执行的资源对象的生命周期。TTL 控制器目前只处理作业,可能以后会扩展以处理将完成执行的其他资源,例如 Pod 和自定义资源。

Alpha 免责声明:此功能目前是 alpha 版,可以通过feature gate TTLAfterFinished 启用。

TTL 控制器

TTL 控制器现在只支持 Jobs。集群操作员可以通过指定 Job 的 .spec.ttlSecondsAfterFinished 字段来自动清理已结束的作业(“完成”或“失败”),就像下边的示例 TTL 控制器假设资源能在执行完成后的 TTL 秒内被清理,也就是当 TTL 过期后。当 TTL 控制器清理资源时,它将做级联删除,即删除资源对象的同时也删除其依赖对象。注意,当资源被删除时,由该资源的生命周期保证其终结器(finalizers)等被执行。

可以随时设置 TTL 秒。以下是设置 Job 的 .spec.ttlSecondsAfterFinished 字段的一些示例:

警告

更新 TTL 秒

请注意,在创建资源后或已经执行结束后,仍可以修改其 TTL 周期,例如作业的 .spec.ttlSecondsAfterFinished 字段。但是,一旦作业变为可被删除状态(当其 TTL 已过期时),即使您通过 API 扩展其 TTL 时长得到了成功的响应,系统也不保证作业将被保留。

时间偏差

由于 TTL 控制器使用存储在 Kubernetes 资源中的时间戳来确定 TTL 是否已过期,因此该功能对集群中的时间偏差很敏感,这可能导致 TTL 控制器在错误的时间清理资源对象。

在 Kubernetes 中,需要在所有节点上运行 NTP(参见#6159)以避免时间偏差。时钟并不总是如此正确,但差异应该很小。设置非零 TTL 时请注意这种风险。

接下来

自动清理作业

设计文档

反馈