Невозможно использовать несколько PVC Workspaces в Tekton
Содержание
Описание проблемыПроявление ошибкиАнализ первопричиныУстранение неполадокСвязанная информацияОписание проблемы
При запуске PipelineRun или TaskRun в Tekton с workspaces на основе нескольких PersistentVolumeClaim (PVC) выполнение завершается с ошибкой, похожей на "more than one PersistentVolumeClaim is bound".
Это происходит даже в том случае, если все PVC являются корректными и правильно объявлены.
Проявление ошибки
-
Выполнение
TaskRunзавершается со статусомFalse, а причиной указываетсяTaskRunValidationFailed: -
Событие
TaskRunотображает сообщение об ошибке:
Анализ первопричины
По умолчанию Tekton включает функцию Affinity Assistant, чтобы помогать размещать pods TaskRun рядом с их PVC на одном node. Это особенно полезно для volumes с режимом доступа 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будет обновлен автоматически. -
Ручной перезапуск компонентов не требуется, изменения вступят в силу автоматически.