• Русский
  • Превышен лимит размера при записи результатов Tekton Task

    Описание проблемы

    Когда шаг Task записывает относительно большой объем данных в Task result, вывод может завершиться с ошибкой из-за ограничений по размеру.

    Проявление ошибки

    • В логах Pod отображается переполнение termination message (результат слишком большой для стандартного лимита 4 KB):

      2025/10/15 03:22:24 ERROR Error while substituting step artifacts: error="Termination message is above max allowed size 4096, caused by large task result."
      2025/10/15 03:22:24 Termination message is above max allowed size 4096, caused by large task result.

    Анализ первопричины

    По умолчанию Tekton Pipelines собирает результаты Task через контейнерный termination message, а Kubernetes ограничивает его размер 4 KB. Это фактически ограничивает размер одного используемого результата Task значением 4096 bytes.

    Чтобы снять это ограничение, Tekton поддерживает чтение результатов из sidecar logs, где параметр max-result-size применяется к каждому результату.

    Устранение неполадок

    TIP

    Следующие инструкции предполагают, что Tekton Pipeline установлен в namespace tekton-pipelines по умолчанию.

    Если он установлен в другом namespace, замените tekton-pipelines на ваш namespace.

    Ниже приведены шаги для настройки ограничения размера результата:

    1. Отредактируйте ресурс TektonConfig, задав spec.pipeline.results-from и spec.pipeline.max-result-size, как показано ниже:

      apiVersion: operator.tekton.dev/v1alpha1
      kind: TektonConfig
      metadata:
        name: config
      spec:
        pipeline:
          # Use sidecar logs instead of termination messages
          results-from: sidecar-logs
          # Result size in bytes (example: 64 KiB). Max is 1,572,863 bytes.
          max-result-size: 65536
    2. ConfigMap feature-flags будет обновлен автоматически.

      apiVersion: v1
      kind: ConfigMap
      metadata:
        name: feature-flags
        namespace: tekton-pipelines
      data:
        results-from: sidecar-logs
        max-result-size: "65536"
    3. Поскольку включена функция results-from: sidecar-logs, необходимо настроить разрешения на доступ к log для controller:

      Technical Note: Эта конфигурация позволяет controller получать информацию о результатах из pod logs. Для получения подробной информации см. Tekton official documentation.

      kubectl apply -f - <<EOF
      kind: ClusterRole
      apiVersion: rbac.authorization.k8s.io/v1
      metadata:
        name: tekton-pipelines-controller-pod-log-access
        labels:
          app.kubernetes.io/component: controller
          app.kubernetes.io/instance: default
          app.kubernetes.io/part-of: tekton-pipelines
      rules:
        - apiGroups: [""]
          resources: ["pods/log"]
          verbs: ["get"]
      ---
      kind: ClusterRoleBinding
      apiVersion: rbac.authorization.k8s.io/v1
      metadata:
        name: tekton-pipelines-controller-pod-log-access
        labels:
          app.kubernetes.io/component: controller
          app.kubernetes.io/instance: default
          app.kubernetes.io/part-of: tekton-pipelines
      subjects:
        - kind: ServiceAccount
          name: tekton-pipelines-controller
          namespace: tekton-pipelines
      roleRef:
        kind: ClusterRole
        name: tekton-pipelines-controller-pod-log-access
        apiGroup: rbac.authorization.k8s.io
      EOF
    4. Перезапуск компонентов вручную не требуется — изменения вступят в силу автоматически.

    Связанные материалы