MultiKueue
警告
MultiKueue 目前是 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 集群,而无需任何其他配置更改。
下一步是什么?
- 了解如何 设置 MultiKueue 环境
- 了解如何将 JobSet 提交 到正在运行的 Kueue 集群。
- 了解如何向正在运行的 Kueue 集群提交批处理/作业。