第 8 章 管理分布式工作负载
在 OpenShift AI 中,集群管理员创建 Kueue 资源来为分布式工作负载配置配额管理。如果集群管理员希望更改其默认行为,可以选择性地配置 CodeFlare Operator。
与 Kue 0.10.1 兼容的 OpenShift 的最低版本是 4.15。如果您在 OpenShift 4.14 或更早版本上部署 Red Hat OpenShift AI 2.18 或更高版本,您必须为 Visibility API 禁用 API 优先级和 Fairness 配置,如 Kueue Cluster Administration 指南中的 Enabling/Disabling API Priority and Fairness 部分所述。此修改是必需的,因为 PriorityLevelConfiguration
API 与旧的 OpenShift 版本不兼容。
8.1. Kueue 资源概述 复制链接链接已复制到粘贴板!
集群管理员可以配置 Kueue 对象(如资源类型、集群队列和本地队列)来管理 OpenShift 集群中多个节点上的分布式工作负载资源。
在 OpenShift AI 2.19 中,红帽不支持共享 cohorts。
8.1.1. 资源类型 复制链接链接已复制到粘贴板!
Kueue ResourceFlavor
对象描述了集群中可用的资源变体。
集群中的资源可以是 同构或 异构的 :
- 同构资源在集群中是相同的:相同的节点类型、CPU、内存、加速器等。
- 异构资源在集群之间有变化。
如果集群具有同构资源,或者不需要为资源的不同类别管理单独的配额,集群管理员可以创建名为 default-flavor
的空 ResourceFlavor
对象,如下所示:
homegeneous 资源的空 Kueue 资源类别
apiVersion: kueue.x-k8s.io/v1beta1 kind: ResourceFlavor metadata: name: default-flavor
apiVersion: kueue.x-k8s.io/v1beta1
kind: ResourceFlavor
metadata:
name: default-flavor
如果集群具有异构资源,集群管理员可以为可用资源的不同变体定义不同的资源类别。示例变化包括不同的 CPU、不同的内存或不同的加速器。如果集群具有多个加速器,集群管理员可以为每个加速器类型设置资源类型。然后,集群管理员可以使用标签、污点和容限将资源类别与集群节点关联,如下例所示。
异构资源的 Kueue 资源类型示例
确保每个资源类别具有正确的标签选择器和污点容限,以便工作负载在预期的节点上运行。
请参阅 Kueue 资源配置 中提供的示例配置。
有关配置资源类型的更多信息,请参阅 Kueue 文档中的 资源类型。https://kueue.sigs.k8s.io/docs/concepts/resource_flavor/
8.1.2. 集群队列 复制链接链接已复制到粘贴板!
Kueue ClusterQueue
对象管理集群资源池,如 pod、CPU、内存和加速器。个集群可以有多个集群队列,每个集群队列可以引用多个资源类型。
集群管理员可以配置集群队列,以定义队列管理的资源类型,并为各个资源类别中的每个资源分配配额。
以下示例将集群队列配置为分配 9 个 CPU、36 GiB 内存、5 个 pod 和 5 NVIDIA GPU 的配额。
集群队列示例
集群管理员应就该集群队列的配额限制通知集群队列的用户。只有在所需资源达到这些配额限制时,集群队列才会启动分布式工作负载。如果分布式工作负载中资源的请求总和大于集群队列中该资源的指定配额,集群队列不接受分布式工作负载。
请参阅 Kueue 资源配置 中提供的示例配置。
有关配置集群队列的更多信息,请参阅 Kueue 文档中的 Cluster Queue。
8.1.3. 本地队列 复制链接链接已复制到粘贴板!
Kue LocalQueue
对象组在一个项目中紧密相关的分布式工作负载。集群管理员可以配置本地队列来指定项目名称和关联的集群队列。然后,每个本地队列都授予对指定集群队列管理的资源的访问权限。集群管理员可以选择在项目中定义一个本地队列,作为该项目的默认本地队列。
在配置分布式工作负载时,用户指定了本地队列名称。如果集群管理员配置了默认的本地队列,用户可以从分布式工作负载代码中省略本地队列规格。
如果请求的总资源位于集群队列中指定的配额限制中,Kueue 从与集群队列的集群队列中为分布式工作负载分配资源。
以下示例为 team-a
项目配置了一个名为 team-a-queue
的本地队列,并将 cluster-queue
指定为关联的集群队列。
本地队列示例
在本例中,kueu e.x-k8s.io/default-queue: "true"
注解将此本地队列定义为 team-a
项目的默认本地队列。如果用户在 team-a
项目中提交分布式工作负载,且分布式工作负载没有在集群配置中指定本地队列,Kue 会自动将分布式工作负载路由到 team-a-queue
本地队列。然后,分布式工作负载可以访问 cluster-queue
集群队列管理的资源。
有关配置本地队列的更多信息,请参阅 Kueue 文档中的 Local Queue。