配置配额
作为管理员,您可以使用 Alauda Build of Kueue 配置配额,以优化用户工作负载的资源分配和系统吞吐量。您可以为计算资源(如 CPU、内存、Pod 和 GPU)配置配额。
您可以通过完成以下步骤,在 Alauda Build of Kueue 中配置配额:
- 配置集群队列。
- 配置资源风味。
- 配置本地队列。
- 用户随后可以将其工作负载提交到本地队列。
目录
1. 配置集群队列1.1. 前提条件1.2. 操作步骤2. 配置资源风味2.1. 前提条件2.2. 操作步骤3. 配置本地队列3.1. 前提条件3.2. 操作步骤4. 配置默认本地队列4.1. 前提条件4.2. 操作步骤4.3. 验证1. 配置集群队列
集群队列是一个集群范围的资源,由 ClusterQueue 对象表示,用于管理 GPU、CPU、内存和 Pod 等资源池。集群队列可用于定义使用限制、资源风味的配额、消费顺序和公平共享规则。
注意:在配置 ResourceFlavor 对象之前,集群队列不可用。
1.1. 前提条件
- Alauda Container Platform Web CLI 能够与您的集群通信。
- 您拥有集群管理员权限或
kueue-batch-admin-role角色。
1.2. 操作步骤
-
创建一个 ClusterQueue 对象的 YAML 文件:
namespaceSelector:定义哪些命名空间可以使用该集群队列管理的资源。示例中空的namespaceSelector表示所有命名空间均可使用这些资源。coveredResources(default-flavor):定义集群队列管理的资源类型。此示例中的ClusterQueue对象管理 CPU、内存、Pod 和 GPU 资源。flavors.name(default-flavor):定义应用于所列资源类型的资源风味。此示例中,default-flavor资源风味应用于 CPU、内存、Pod 和 GPU 资源。resources(default-flavor):定义准入作业的资源要求。此示例集群队列仅在满足以下条件时准入作业:- CPU 请求总和小于或等于 9。
- 内存请求总和小于或等于 36Gi。
- Pod 总数小于或等于 5。
- GPU 任务总和小于或等于 20(如果使用 Alauda Build of Hami,参见注释 5)。
- 总 GPU 核心请求数小于或等于 300(如果使用 Alauda Build of Hami)。
- 总 GPU 内存请求数小于或等于 20480。
- GPU 请求总和小于或等于 100(如果使用 Alauda Build of NVIDIA GPU Device Plugin,参见注释 7)。
coveredResources(t4-flavor):定义 Alauda Build of Hami 的资源要求。如果不使用 Alauda Build of Hami,请删除该部分。flavors.name(t4-flavor):定义应用于所列资源类型的资源风味。此示例中,t4-flavor资源风味应用于 Nvidia T4 GPU 卡。如果不想为特定卡类型配置配额,可以填写default-flavor。coveredResources(a30-flavor):定义 Alauda Build of NVIDIA GPU Device Plugin 的资源要求。如果不使用该插件,请删除该部分。flavors.name(a30-flavor):定义应用于所列资源类型的资源风味。此示例中,a30-flavor资源风味应用于 Nvidia A30 GPU 卡。如果不想为特定卡类型配置配额,可以填写default-flavor。
-
运行以下命令应用
ClusterQueue对象:
2. 配置资源风味
配置完 ClusterQueue 对象后,您可以配置 ResourceFlavor 对象。
集群中的资源通常不是同质的。如果您的集群资源是同质的,可以使用空的 ResourceFlavor,而无需为自定义资源风味添加标签。
您可以使用自定义 ResourceFlavor 对象,通过标签、污点和容忍度将不同的资源变体与集群节点关联。然后,您可以将工作负载与特定节点类型关联,实现细粒度的资源管理。
2.1. 前提条件
- Alauda Container Platform Web CLI 能够与您的集群通信。
- 您拥有集群管理员权限或
kueue-batch-admin-role角色。
2.2. 操作步骤
-
创建 ResourceFlavor 对象的 YAML 文件:
空 ResourceFlavor 对象示例
Nvidia Tesla T4 GPU 的自定义 ResourceFlavor 对象示例
Nvidia A30 GPU 的自定义 ResourceFlavor 对象示例
-
运行以下命令应用 ResourceFlavor 对象:
3. 配置本地队列
本地队列是命名空间范围的对象,由 LocalQueue 对象表示,用于将属于单个命名空间的紧密相关的工作负载分组。
作为管理员,您可以配置 LocalQueue 对象指向一个集群队列。这会将集群队列中的资源分配给 LocalQueue 对象中指定命名空间的工作负载。
3.1. 前提条件
- Alauda Container Platform Web CLI 能够与您的集群通信。
- 您拥有集群管理员权限或
kueue-batch-admin-role角色。 - 您已创建
ClusterQueue对象。
3.2. 操作步骤
-
创建 LocalQueue 对象的 YAML 文件:
基本 LocalQueue 对象示例
-
运行以下命令应用 LocalQueue 对象:
4. 配置默认本地队列
作为集群管理员,您可以通过管理选定命名空间中的所有作业来提升集群中的配额执行效率,而无需显式为每个作业打标签。您可以通过创建默认本地队列实现此目的。
默认本地队列作为新创建且未带有 kueue.x-k8s.io/queue-name 标签的作业的本地队列。创建默认本地队列后,命名空间中新创建且未带有 kueue.x-k8s.io/queue-name 标签的作业会自动更新为带有 kueue.x-k8s.io/queue-name: default 标签。
4.1. 前提条件
- Alauda Container Platform Web CLI 能够与您的集群通信。
- 您拥有集群管理员权限或
kueue-batch-admin-role角色。 - 您已创建 ClusterQueue 对象。
4.2. 操作步骤
-
创建名为 default 的 LocalQueue 对象的 YAML 文件:
默认 LocalQueue 对象示例
-
运行以下命令应用
LocalQueue对象:
4.3. 验证
- 在与默认本地队列相同的命名空间中创建一个作业。
- 观察该作业自动更新带有
kueue.x-k8s.io/queue-name: default标签。