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