Unable to Use Multiple PVC Workspaces in Tekton
目录
问题描述
在 Tekton 中运行带有多个基于 PersistentVolumeClaim (PVC) 的 workspaces 的 PipelineRun 或 TaskRun 时,执行会失败,并出现类似“more than one PersistentVolumeClaim is bound”的错误。
即使所有 PVC 都有效且声明正确,也会发生此问题。
错误表现
-
TaskRun 执行失败,状态为
False,原因是TaskRunValidationFailed: -
TaskRun 事件显示错误信息:
根本原因分析
默认情况下,Tekton 启用了Affinity Assistant 功能,帮助将 TaskRun pod 与其 PVC 在同一节点上进行协同调度。这对于具有 ReadWriteOnce 访问模式的卷尤其有用。
但是,当启用 Affinity Assistant 时:
- 每个
TaskRun仅限使用单个基于 PVC 的工作区。 - 绑定多个 PVC 会触发验证错误,阻止 TaskRun 运行。
此限制是为了避免复杂的调度问题和节点亲和性冲突。
故障排除
若要允许 TaskRun 或 PipelineRun 使用多个基于 PVC 的工作区,必须通过更新 Tekton 功能标志禁用 Affinity Assistant。
建议按以下步骤排查:
-
编辑 TektonConfig 资源,设置
spec.pipeline.coschedule如下: -
feature-flagsConfigMap 会自动更新。 -
无需手动重启组件,变更会自动生效。