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.
TaskRun execution fails with a status of False, and the reason is TaskRunValidationFailed:
The TaskRun event displays an error message:
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:
TaskRun is limited to a single PVC-based workspace.This restriction is enforced to avoid complex scheduling issues and node affinity conflicts.
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.coschedule as shown below:
The feature-flags ConfigMap will be updated automatically.
No manual component restarts are required, changes will take effect automatically.