在多集群中运行外部框架 Job

运行 Multi Kueue 调度器外部框架 Job。
Feature state alpha since Kueue v0.14

开始之前

  1. 检查多 Kueue 安装指南以了解如何正确设置多 Kueue 集群。

  2. 启用 MultiKueueAdaptersForCustomJobs 特性门控。此特性处于 Alpha 阶段,默认情况下是禁用的。

    要启用此特性,请将 --feature-gates=MultiKueueAdaptersForCustomJobs=true 标志添加到 Kueue 控制器管理器的参数中。例如,你可以使用以下命令将其应用到你的部署中:

    kubectl patch deployment kueue-controller-manager -n kueue-system \
      --type='json' -p='[{"op": "add", "path": "/spec/template/spec/containers/0/args/-", "value": "--feature-gates=MultiKueueAdaptersForCustomJobs=true"}]'
    
  3. 确保 Kueue 控制器对你的外部 GVK 有权限。以 Tekton PipelineRuns 为例:

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
      name: kueue-external-frameworks
    rules:
    - apiGroups: ["tekton.dev"]
      resources: ["pipelineruns", "pipelineruns/status"]
      verbs: ["get", "list", "watch", "patch", "update"]
    

MultiKueue 集成

MultiKueue 外部框架支持允许你配置 MultiKueue 以适用于遵循 Job 模式的任何自定义资源(CR)。这对于集成如下的 CRD 特别有用:

  • Tekton PipelineRun
  • Argo Workflow
  • 其他自定义 Job 类型

要由通用的 MultiKueue 适配器管理,自定义资源必须包含 .spec.managedBy 字段。 当一个 CR 被设计为由 MultiKueue 管理时,此字段必须设置为 "kueue.x-k8s.io/multikueue"。 适配器使用这个字段来识别要管理的对象。

外部框架在 Kueue Configuration 对象中配置。 设置位于 multikueue.externalFrameworks 下。此字段保存要启用的框架列表。

externalFrameworks 列表中的每个条目都是一个对象,具有以下字段:

字段类型必需描述
namestring资源的 GVK 格式为 Kind.version.group

示例:Tekton PipelineRun

为了演示如何配置适配器,我们以 Tekton PipelineRun 为例。

首先,更新你的 Kueue 配置,将 PipelineRun 添加到 externalFrameworks 列表中:

apiVersion: config.kueue.x-k8s.io/v1beta2
kind: Configuration
data:
  multikueue:
    externalFrameworks:
      - name: "PipelineRun.v1.tekton.dev"

一旦配置完成,通用的 MultiKueue 适配器将监视 .spec.managedBy 设置为 "kueue.x-k8s.io/multikueue"PipelineRun 资源, 并像管理其他支持的 Job 类型一样管理它们。 这使得 Kueue 可以跨多个集群处理 PipelineRun 对象的资源管理。