3.13. 自动修剪任务运行和管道运行
过时的 TaskRun 和 PipelineRun 对象及其执行的实例占用了可用于活跃运行的物理资源。为了获得最佳性能,Red Hat OpenShift Pipelines 提供了一个修剪器组件,它会自动删除各种命名空间中未使用的对象及其实例。
您可以使用 TektonConfig 自定义资源并使用命名空间注解修改命名空间的配置,为整个安装配置修剪器。但是,您无法选择性地自动修剪命名空间中的单个任务运行或管道运行。
3.13.1. 配置修剪器 复制链接链接已复制到粘贴板!
您可以使用 TektonConfig 自定义资源配置定期修剪与管道运行和任务运行关联的资源。
以下示例与默认配置对应:
修剪器配置示例
| 参数 | 描述 |
|---|---|
|
| 运行修剪器进程的 Cron 调度。默认调度每天 08:00 运行进程。如需有关 Cron schedule 语法的更多信息,请参阅 Kubernetes 文档中的 Cron schedule 语法。 |
|
|
修剪器应用到的资源类型。可用的资源类型为 |
|
| 要保留的每个类型的最新资源数量。 |
|
|
如果设置为
如果设置为 |
|
|
保存资源的最长时间,以分钟为单位。例如,若要保留在五天内创建的资源,请将 |
|
| 这个参数是可选的。如果因任何原因而在调度时间没有启动修剪器作业,此设置将配置持续启动任务的最长时间,以秒为单位。如果作业没有在指定时间内启动,OpenShift Pipelines 会考虑这个作业失败,并在下一次调度的时间启动修剪器。如果没有指定此参数,且修剪器作业不会在调度的时间启动,OpenShift Pipelines 会尝试稍后启动作业。 |
keep 和 keep-since 参数是互斥的。在您的配置中只使用其中之一。
3.13.2. 自动修剪任务运行和管道运行的注解 复制链接链接已复制到粘贴板!
要修改在命名空间中运行和管道运行的配置,您可以在命名空间中设置注解。
以下命名空间注解的含义与 TektonConfig 自定义资源中的对应键相同:
-
operator.tekton.dev/prune.schedule -
operator.tekton.dev/prune.resources -
operator.tekton.dev/prune.keep -
operator.tekton.dev/prune.prune-per-resource -
operator.tekton.dev/prune.keep-since
operator.tekton.dev/prune.resources 注解接受以逗号分隔的列表。要修剪任务运行和管道运行,请将此注解设置为 "taskrun, pipelinerun"。
可用的额外命名空间注解如下:
-
operator.tekton.dev/prune.skip:设置为true时,配置注解的命名空间不会被修剪。 -
operator.tekton.dev/prune.strategy:将此注解的值设置为keep或keep-since。
例如,以下注解会保留在最后 5 天中创建的所有任务运行和管道运行,并删除旧的资源:
auto-pruning 注解示例
3.13.3. 启用基于事件的修剪器 复制链接链接已复制到粘贴板!
基于事件的修剪器只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
您可以根据可配置的策略,使用基于事件的 tektonpruner 控制器来自动删除已完成的资源,如 PipelineRuns 和 TaskRuns。与基于作业的默认修剪器不同,基于事件的修剪器在接近实时侦听资源事件并修剪资源。
您可以将基于事件的修剪器与以下内容一起使用:
资源注解 Tekton Results Pipelines 作为代码
Operator 不限制使用基于事件的修剪器的这些功能。但是,如果检测到冲突,将来的版本可能会引入验证。
在启用基于事件的修剪器前,您必须在 TektonConfig 自定义资源(CR)中禁用默认修剪器。如果启用了修剪器类型,则部署就绪状态将更改为 False,并且输出中会显示以下出错信息:
Components not in ready state: Invalid Pruner Configuration!! Both pruners, tektonpruner(event based) and pruner(job based) cannot be enabled simultaneously. Please disable one of them.
Components not in ready state: Invalid Pruner Configuration!! Both pruners, tektonpruner(event based) and pruner(job based) cannot be enabled simultaneously. Please disable one of them.
流程
在 TektonConfig CR 中,通过将
spec.pruner.disabled字段设置为true来禁用默认的修剪器,并通过将spec.tektonpruner.disabled字段设置为false来启用基于事件的修剪器。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 应用更新的 CR 后,Operator 会在
openshift-pipelines命名空间中部署tekton-pruner-controllerpod。验证
openshift-pipelines命名空间中是否显示以下配置映射:Expand ConfigMap 用途 tekton-pruner-default-spec定义默认修剪行为
pruner-info存储控制器使用的内部运行时数据
config-logging-tekton-pruner为修剪器配置日志记录设置
config-observability-tekton-pruner启用可观察功能,如指标和追踪
与默认修剪器不同,您可以通过修改 TektonConfig CR 来启用或禁用基于事件的修剪器。通过修改 tekton-pruner-default-spec 配置映射来配置所有其他修剪行为。
验证
要验证
tekton-pruner-controllerpod 是否正在运行,请运行以下命令:oc get pods -n openshift-pipelines
$ oc get pods -n openshift-pipelinesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证输出是否包含处于
Running状态的tekton-pruner-controllerpod。输出示例:tekton-pruner-controller-<id> Running
$ tekton-pruner-controller-<id> RunningCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.13.4. 配置基于事件的修剪器 复制链接链接已复制到粘贴板!
基于事件的修剪器只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
您可以通过修改 openshift-pipelines 命名空间中的 tekton-pruner-default-spec 配置映射来为基于事件的修剪器配置修剪行为。此配置映射支持全局修剪策略和可选命名空间的覆盖。
以下示例显示了使用全局修剪规则的默认 tekton-pruner-default-spec 配置映射:
-
ttlSecondsAfterFinished: 300: Delete resources 300 秒(5 分钟)完成后。 -
successfulHistoryLimit: 3: Retain 3 successful run。 -
failedHistoryLimit: 3: Retain 3 failed running。 -
historyLimit: 5:将保留限制为 5 运行。如果没有定义特定于状态的限制,则使用此设置。
您可以通过将 enforcedConfigLevel 设置为 命名空间 并在 namespaces 部分下配置策略来定义修剪规则。在以下示例中,将 60 秒时间应用到 dev-project 命名空间中的资源:
您可以使用 tekton-pruner-default-spec 配置映射的 global-config 部分中的以下参数:
| 参数 | 描述 |
|---|---|
|
| 在完成后的固定秒数后删除资源。 |
|
| 保留指定次数最近运行成功,并删除旧的成功运行。 |
|
| 保留最近失败的运行次数,并删除旧的失败运行。 |
|
| 在未定义特定于状态的限制时应用通用历史记录限制。 |
|
|
指定修剪器应用配置的级别。接受的值: |
|
| 定义每个命名空间修剪规则。 |