配置配额
作为管理员,你可以使用 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为空,这表示所有命名空间都可以使用这些资源。default-flavor的coveredResources:定义由集群队列管理的资源类型。此示例中的ClusterQueue对象管理 CPU、内存、pod 和 GPU 资源。default-flavor的flavors.name:定义应用于所列资源类型的资源风味。在此示例中,default-flavor资源风味应用于 CPU、内存、pod 和 GPU 资源。default-flavor的resources:定义接纳作业所需的资源要求。此示例中的集群队列仅在满足以下条件时接纳作业:- CPU 请求总和小于或等于 9。
- 内存请求总和小于或等于 36Gi。
- pod 总数小于或等于 5。
- GPU task 总和小于或等于 20(如果使用 Alauda Build of Hami,参见注释 5)。
- GPU 核心请求总和小于或等于 300(如果使用 Alauda Build of Hami)。
- GPU 内存请求总和小于或等于 20480。
- GPU 请求总和小于或等于 100(如果使用 Alauda Build of NVIDIA GPU Device Plugin,参见注释 7)。
t4-flavor的coveredResources:定义 Alauda Build of Hami 的资源要求。如果你不使用 Alauda Build of Hami,请将其删除。t4-flavor的flavors.name:定义应用于所列资源类型的资源风味。在此示例中,t4-flavor资源风味应用于 Nvidia T4 GPU 卡。如果你不想为特定卡类型配置配额,可以填入default-flavor。a30-flavor的coveredResources:定义 Alauda Build of NVIDIA GPU Device Plugin 的资源要求。如果你不使用 Alauda Build of NVIDIA GPU Device Plugin,请将其删除。a30-flavor的flavors.name:定义应用于所列资源类型的资源风味。在此示例中,a30-flavor资源风味应用于 Nvidia A30 GPU 卡。如果你不想为特定卡类型配置配额,可以填入default-flavor。
-
运行以下命令来应用
ClusterQueue对象:
2. 配置资源风味
配置好 ClusterQueue 对象后,你可以配置 ResourceFlavor 对象。
集群中的资源通常并不同质。如果集群中的资源是同质的,你可以使用空的 ResourceFlavor,而不必向自定义资源风味添加标签。
你可以使用自定义 ResourceFlavor 对象,通过标签、taint 和 toleration 来表示与集群节点关联的不同资源变体。然后,你可以将工作负载与特定节点类型关联,以实现细粒度的资源管理。
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标签。