Невозможно использовать несколько рабочих областей на основе PVC в Tekton
Описание проблемы
При запуске PipelineRun или TaskRun в Tekton с несколькими рабочими областями (workspaces), основанными на PersistentVolumeClaim (PVC), выполнение завершается с ошибкой, похожей на «more than one PersistentVolumeClaim is bound».
Это происходит даже если все PVC действительны и корректно объявлены.
Проявление ошибки
-
Выполнение TaskRun завершается со статусом
False, а причиной являетсяTaskRunValidationFailed: -
В событии TaskRun отображается сообщение об ошибке:
Анализ причины
По умолчанию в Tekton включена функция Affinity Assistant, которая помогает размещать поды TaskRun вместе с их PVC на одном узле. Это особенно полезно для томов с режимом доступа ReadWriteOnce.
Однако при включённом Affinity Assistant:
- Каждый
TaskRunограничен использованием одной рабочей области на основе PVC. - Привязка более одного PVC вызывает ошибку валидации, не позволяя TaskRun запуститься.
Это ограничение введено для предотвращения сложностей с планированием и конфликтов с node affinity.
Устранение неполадок
Чтобы разрешить TaskRun или PipelineRun использовать несколько рабочих областей на основе PVC, необходимо отключить Affinity Assistant, обновив флаги функций Tekton.
Рекомендуется выполнить следующие действия:
-
Отредактируйте ресурс TektonConfig, установив
spec.pipeline.coscheduleследующим образом: -
ConfigMap
feature-flagsбудет обновлён автоматически. -
Перезапуск компонентов вручную не требуется, изменения вступят в силу автоматически.