MultiKueue

Kueue 多集群作业调度。
功能状态 自 Kueue v0.6 起为 alpha

MultiKueue 设置由一个管理器集群和至少一个工作程序集群组成。

集群角色

管理器集群

管理器的主要职责是

  • 建立并维护与工作集群的连接。
  • 创建和监控远程对象(工作负载或作业),同时保持本地对象同步。

MultiKueue 准入检查控制器在管理器集群中运行,还将维护由 multikueue 控制的准入检查的 活动 状态。

使用 MultiKueue 为 ClusterQueue 的风味设置的配额控制在给定时间点有多少作业可以调度。理想情况下,管理器集群中的配额应等于工作集群中的总配额。如果明显较低,工作集群将得不到充分利用。如果明显较高,管理器将调度和监控工作集群中的工作负载,而这些工作负载没有机会被准入。

工作集群

工作集群充当独立的 Kueue 集群。工作负载和作业由在管理器集群中运行的 MultiKueue 准入检查控制器创建和删除。

作业流

要使作业受多集群调度的约束,您需要将其分配给使用 MultiKueue AdmissionCheck 的 ClusterQueue。Multikueue 系统的工作原理如下

  • 当作业的工作负载在管理器集群中获得配额预留时,该工作负载的副本将在所有配置的工作集群中创建。
  • 当其中一个工作集群准入发送给它的远程工作负载时
    • 管理器将删除所有其他远程工作负载。
    • 管理者在选定的工作程序集群中创建作业副本,配置为使用已准许的工作负载保留的配额,方法是设置作业的 kueue.x-k8s.io/prebuilt-workload-name 标签。
  • 管理者监视远程对象、工作负载和作业,并将它们状态中的任何更改同步到本地对象。
  • 当远程工作负载标记为 Finished
    • 管理者对对象状态进行最后一次同步。
    • 管理者从工作程序集群中移除对象。

支持的作业

batch/Job

batch/Job 集成可以根据 MultiKueueBatchJobWithManagedBy 特性门的状态以两种不同的方式工作,请查看 更改特性门配置 了解设置详细信息。

禁用 MultiKueueBatchJobWithManagedBy

已知限制

  • 由于在管理程序集群中取消暂停作业将导致其本地执行,因此在远程作业执行期间,AdmissionCheckStates 保持为 Pending
  • 由于更新本地作业的状态可能会与 Kubernetes 作业控制器冲突,因此管理程序在作业执行期间不会同步作业状态。当远程工作负载标记为 Finished 时,管理程序会复制远程作业的最终状态。

启用 MultiKueueBatchJobWithManagedBy

当您想将作业提交到具有 MultiKueue 准入检查的 ClusterQueue 时,您应将 spec.managedBy 字段设置为 kueue.x-k8s.io/multikueue,否则准入检查控制器将 拒绝 工作负载,导致其被标记为 已完成,并显示一个指示原因的错误。

managedBy 字段作为 Alpha 功能在 Kubernetes 1.30.0 中提供,有关详细信息,请查看 将 Job 对象的管理委托给外部控制器

JobSet

我们建议使用 JobSet v0.5.1 或更高版本。

提交作业

配置的 MultiKueue 环境 中,您可以将任何 MultiKueue 支持的作业提交到 Manager 集群,目标是为 Multikueue 配置的 ClusterQueue。Kueue 将作业委托给配置的 worker 集群,而无需任何其他配置更改。

下一步是什么?



上次修改时间为 2024 年 7 月 9 日:[网站] 添加可重用的功能状态组件 (#2564) (827ddde8)