TaskRun 和 PipelineRun 资源的定期清理
概述
使用 Pruner 功能自动清理 Tekton 中的 TaskRun 和 PipelineRun 资源。Pruner 会在后台执行 tkn 命令来完成资源清理。
使用场景
- 定期清理 TaskRun 资源
- 定期清理 PipelineRun 资源
- 根据 namespace 配置不同的清理策略
前提条件
- 必须已安装 Tekton Operator 组件
- 环境中必须已自动创建 TektonConfig 资源
步骤
步骤 1
编辑 TektonConfig 资源
步骤 2
按如下所示修改 spec.pruner 配置:
关键配置说明:
disabled:设置为true时,禁用 pruner 功能(默认值:false)schedule:清理任务的执行计划,使用 cron 表达式格式startingDeadlineSeconds:任务启动截止时间的可选配置(单位:秒)。如果任务错过了计划执行时间并超过该持续时间,则会被计为失败resources:支持清理的资源类型,包括taskrun和pipelinerunkeep:清理时保留的最大资源数量keep-since:在指定时间范围内保留资源(单位:分钟)prune-per-resource:设置为true时(默认值为false),会针对每种资源分别应用keep配置- 例如:如果
ns-1namespace 中有两个 Pipelines,分别名为pipeline-1和pipeline-2,则会执行以下命令: - 注意:使用
keep-since时,启用prune-per-resource=true没有实际意义,因为keep-since是基于资源的时间约束,而不是资源数量。
- 例如:如果
Note
如果 disabled: false 且 schedule 为空,则全局 pruner 任务将被禁用。
但是,如果某个 namespace 中存在值为 operator.tekton.dev/prune.schedule 的注解,则会为该 namespace 创建 pruner 任务。
步骤 3
通过 namespace 注解配置清理策略(可选)
默认情况下,pruner 任务将使用全局配置(spec.pruner),但用户可以通过以下注解为特定 namespace 自定义 pruner 配置。如果某些注解缺失或值无效,则会使用全局配置值,或者跳过该 namespace。
支持的注解:
operator.tekton.dev/prune.skip:设置为true时,跳过该 namespace 的 pruner 任务operator.tekton.dev/prune.schedule:设置该 namespace 的清理计划operator.tekton.dev/prune.keep:设置要保留的最大资源数量operator.tekton.dev/prune.keep-since:设置资源在指定时间范围内的保留时长(单位:分钟)operator.tekton.dev/prune.prune-per-resource:设置是否针对每种资源分别应用清理策略operator.tekton.dev/prune.resources:设置要清理的资源类型,可以是taskrun和/或pipelinerun,多个值之间用逗号分隔operator.tekton.dev/prune.strategy:设置清理策略,可选值为keep或keep-since
示例:
::: note 如果未设置全局配置,将使用以下默认值:
resources: pipelinerunkeep: 100:::
结果
配置完成后,系统将根据设定的计划自动清理已过期的 TaskRun 和 PipelineRun 资源。