3.13. 自动修剪任务运行和管道运行


过时的 TaskRunPipelineRun 对象及其执行的实例占用了可用于活跃运行的物理资源。为了获得最佳性能,Red Hat OpenShift Pipelines 提供了一个修剪器组件,它会自动删除各种命名空间中未使用的对象及其实例。

注意

您可以使用 TektonConfig 自定义资源并使用命名空间注解修改命名空间的配置,为整个安装配置修剪器。但是,您无法选择性地自动修剪命名空间中的单个任务运行或管道运行。

3.13.1. 配置修剪器

您可以使用 TektonConfig 自定义资源配置定期修剪与管道运行和任务运行关联的资源。

以下示例与默认配置对应:

修剪器配置示例

apiVersion: operator.tekton.dev/v1alpha1
kind: TektonConfig
metadata:
  name: config
# ...
spec:
  pruner:
    resources:
      - taskrun
      - pipelinerun
    keep: 100
    prune-per-resource: false
    schedule: "* 8 * * *"
    startingDeadlineSeconds: 60
# ...
Copy to Clipboard Toggle word wrap

Expand
表 3.3. 修剪器配置支持的参数
参数描述

调度

运行修剪器进程的 Cron 调度。默认调度每天 08:00 运行进程。如需有关 Cron schedule 语法的更多信息,请参阅 Kubernetes 文档中的 Cron schedule 语法

resources

修剪器应用到的资源类型。可用的资源类型为 taskrunpipelinerun

keep

要保留的每个类型的最新资源数量。

prune-per-resource

如果设置为 false,则 keep 参数的值表示任务运行或管道运行的总数。例如,如果 keep 设为 100,则修剪器会保持 100 个最新的任务运行和 100 个最新的管道运行,并删除所有其他资源。

如果设置为 true,则会单独计算 keep 参数的值,用于引用每个管道的管道运行,以及引用每个任务的任务运行。例如,如果 keep 设为 100,则修剪器为 Pipeline1 保留 100 个最新的管道运行,其中 100 个最新的管道为 Pipeline2 运行,100 个最新的任务运行 Task1,以此类推,并删除所有其他资源。

keep-since

保存资源的最长时间,以分钟为单位。例如,若要保留在五天内创建的资源,请将 keep-since 设置为 7200

startingDeadlineSeconds

这个参数是可选的。如果因任何原因而在调度时间没有启动修剪器作业,此设置将配置持续启动任务的最长时间,以秒为单位。如果作业没有在指定时间内启动,OpenShift Pipelines 会考虑这个作业失败,并在下一次调度的时间启动修剪器。如果没有指定此参数,且修剪器作业不会在调度的时间启动,OpenShift Pipelines 会尝试稍后启动作业。

注意

keepkeep-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:将此注解的值设置为 keepkeep-since

例如,以下注解会保留在最后 5 天中创建的所有任务运行和管道运行,并删除旧的资源:

auto-pruning 注解示例

kind: Namespace
apiVersion: v1
# ...
metadata:
  annotations:
    operator.tekton.dev/prune.resources: "taskrun, pipelinerun"
    operator.tekton.dev/prune.keep-since: 7200
# ...
Copy to Clipboard Toggle word wrap

3.13.3. 启用基于事件的修剪器

重要

基于事件的修剪器只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

您可以根据可配置的策略,使用基于事件的 tektonpruner 控制器来自动删除已完成的资源,如 PipelineRunsTaskRuns。与基于作业的默认修剪器不同,基于事件的修剪器在接近实时侦听资源事件并修剪资源。

您可以将基于事件的修剪器与以下内容一起使用:

资源注解 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.
Copy to Clipboard Toggle word wrap

流程

  1. 在 TektonConfig CR 中,通过将 spec.pruner.disabled 字段设置为 true 来禁用默认的修剪器,并通过将 spec.tektonpruner.disabled 字段设置为 false 来启用基于事件的修剪器。

    apiVersion: operator.tekton.dev/v1alpha1
    kind: TektonConfig
    metadata:
     name: config
    spec:
      # ...
      pruner:
        disabled: true
      # ...
      tektonpruner:
        disabled: false
        options: {}
      # ...
    Copy to Clipboard Toggle word wrap

    应用更新的 CR 后,Operator 会在 openshift-pipelines 命名空间中部署 tekton-pruner-controller pod。

  2. 验证 openshift-pipelines 命名空间中是否显示以下配置映射:

    Expand
    ConfigMap用途

    tekton-pruner-default-spec

    定义默认修剪行为

    pruner-info

    存储控制器使用的内部运行时数据

    config-logging-tekton-pruner

    为修剪器配置日志记录设置

    config-observability-tekton-pruner

    启用可观察功能,如指标和追踪

重要

与默认修剪器不同,您可以通过修改 TektonConfig CR 来启用或禁用基于事件的修剪器。通过修改 tekton-pruner-default-spec 配置映射来配置所有其他修剪行为。

验证

  1. 要验证 tekton-pruner-controller pod 是否正在运行,请运行以下命令:

    $ oc get pods -n openshift-pipelines
    Copy to Clipboard Toggle word wrap
  2. 验证输出是否包含处于 Running 状态的 tekton-pruner-controller pod。输出示例:

    $ tekton-pruner-controller-<id>    Running
    Copy to Clipboard Toggle word wrap

3.13.4. 配置基于事件的修剪器

重要

基于事件的修剪器只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

您可以通过修改 openshift-pipelines 命名空间中的 tekton-pruner-default-spec 配置映射来为基于事件的修剪器配置修剪行为。此配置映射支持全局修剪策略和可选命名空间的覆盖。

以下示例显示了使用全局修剪规则的默认 tekton-pruner-default-spec 配置映射:

apiVersion: v1
kind: ConfigMap
metadata:
  name: tekton-pruner-default-spec
  namespace: openshift-pipelines
data:
  global-config: |
    enforcedConfigLevel: global
    ttlSecondsAfterFinished: 300
    successfulHistoryLimit: 3
    failedHistoryLimit: 3
    historyLimit: 5
# ...
Copy to Clipboard Toggle word wrap
  • 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 命名空间中的资源:

# ...
data:
  global-config: |
    enforcedConfigLevel: namespace
    ttlSecondsAfterFinished: 300
    namespaces:
      dev-project:
        ttlSecondsAfterFinished: 60
# ...
Copy to Clipboard Toggle word wrap

您可以使用 tekton-pruner-default-spec 配置映射的 global-config 部分中的以下参数:

Expand
参数描述

ttlSecondsAfterFinished

在完成后的固定秒数后删除资源。

successfulHistoryLimit

保留指定次数最近运行成功,并删除旧的成功运行。

failedHistoryLimit

保留最近失败的运行次数,并删除旧的失败运行。

historyLimit

在未定义特定于状态的限制时应用通用历史记录限制。

enforcedConfigLevel

指定修剪器应用配置的级别。接受的值: 全局 或命名空间

命名空间

定义每个命名空间修剪规则。

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat