Unable to Use Multiple PVC Workspaces in Tekton
TOC
Problem Description
When running a PipelineRun or TaskRun in Tekton with multiple PersistentVolumeClaim (PVC)-based workspaces, the execution fails with an error similar to "more than one PersistentVolumeClaim is bound".
This occurs even if all PVCs are valid and correctly declared.
Error Manifestation
-
TaskRun execution fails with a status of
False, and the reason isTaskRunValidationFailed: -
The TaskRun event displays an error message:
Root Cause Analysis
By default, Tekton enables the Affinity Assistant feature to help co-locate TaskRun pods with their PVCs on the same node. This is especially useful for volumes with ReadWriteOnce access mode.
However, when the Affinity Assistant is enabled:
- Each
TaskRunis limited to a single PVC-based workspace. - Binding more than one PVC triggers a validation error, preventing the TaskRun from running.
This restriction is enforced to avoid complex scheduling issues and node affinity conflicts.
Troubleshooting
To allow a TaskRun or PipelineRun to use multiple PVC-based workspaces, you must disable the Affinity Assistant by updating the Tekton feature flags.
It is recommended to troubleshoot as follows:
-
Edit the TektonConfig resource by setting
spec.pipeline.coscheduleas shown below: -
The
feature-flagsConfigMap will be updated automatically. -
No manual component restarts are required, changes will take effect automatically.