Невозможно использовать несколько рабочих областей на основе 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 запуститься.
Это ограничение введено для избежания сложностей с планированием и конфликтов аффинности узлов.
Устранение неполадок
Чтобы разрешить TaskRun или PipelineRun использовать несколько рабочих областей на основе PVC, необходимо отключить Affinity Assistant, обновив флаги функций Tekton.
Рекомендуется выполнить следующие действия:
-
Отредактируйте ресурс TektonConfig, установив
spec.pipeline.coscheduleследующим образом: -
ConfigMap
feature-flagsбудет обновлён автоматически. -
Перезапуск компонентов вручную не требуется, изменения вступят в силу автоматически.