8.4. 强制使用本地队列
OpenShift 集群中高效的工作负载编排依赖于对资源和队列进行严格管理。集群管理员可以使用 Validating Admission Policy 功能,使用 Local Queue 标识符强制标记 RayCluster 和 PyTorchJob 资源。该标签可确保根据队列管理策略正确分类和路由工作负载,从而防止资源争用并提高操作效率。
Validating Admission Policy 功能在 OpenShift v4.17 或更高版本中提供。
Validating Admission Policy 功能目前在 Red Hat OpenShift AI 2.22 中作为技术预览功能提供。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
8.4.1. 强制所有项目的 local-queue 标签策略 复制链接链接已复制到粘贴板!
强制 local-queue 标签策略时,只有在 将 Ray 集群和 PyTorchJobs 配置为使用本地队列时,才会创建 Ray 集群和 PyTorchJob 资源,然后由 Kueue 管理。
默认情况下,为所有项目强制执行 local-queue 标签策略。Validating Admission Policy 对 RayCluster 和 PyTorchJob 资源强制执行。
如果编辑了原始 ValidatingAdmissionPolicyBinding 资源,您可以使用以下任一方法撤销编辑并为所有项目强制实施策略:
-
删除
kue-validating-admission-policy-binding资源。资源使用默认值自动创建。不需要其他操作。 - 按照此流程中所述编辑现有资源。
先决条件
-
已使用
cluster-admin角色登录 OpenShift。 - 您已安装了所需的分布式工作负载组件,如 安装分布式工作负载组件 中所述(用于断开连接的环境,请参阅安装分布式工作负载组件)。
流程
- 在 OpenShift 控制台中,打开 Administrator 视角。
- 从 Project 列表中,选择 All Projects。
-
点 Home
Search。 - 在 Resources 列表中,搜索 ValidatingAdmissionPolicyBinding。
-
点
kue-validating-admission-policy-binding条目打开详情页面。 - 点 YAML 选项卡显示绑定规格。
确保将以下字段设置为指定的值:
为所有项目强制执行 local-queue 标签的示例
kind: ValidatingAdmissionPolicyBinding apiVersion: admissionregistration.k8s.io/v1 metadata: name: kueue-validating-admission-policy-binding uid: <Populated by the system. Read-only.> resourceVersion: <Populated by the system. Read-only.> generation: <Populated by the system. Read-only.> creationTimestamp: <Populated by the system. Read-only.> labels: app.kubernetes.io/component: controller app.kubernetes.io/name: kueue managedFields: spec: policyName: kueue-validating-admission-policy matchResources: namespaceSelector: {} objectSelector: {} matchPolicy: Equivalent validationActions: - Deny- 如果您进行任何更改,请单击 Save。
验证
要验证是否为 Ray 集群强制执行 local-queue 标签策略:
- 创建一个项目。
在新项目中完成以下步骤:
在配置本地队列前,请尝试创建 Ray 集群。
Validating Admission Policy 拒绝请求,Ray 集群不会被创建,因为没有配置本地队列。
-
创建没有
default-queue注解的本地队列。 尝试创建 Ray 集群,并在
local_queue字段中指定 local-queue 名称。Validating Admission Policy 批准请求,并创建了 Ray 集群。
尝试在
local_queue字段中指定值的情况下创建 Ray 集群。Validating Admission Policy rejects 请求,Ray 集群没有被创建,因为没有指定本地队列,且没有配置默认的本地队列。
-
编辑本地队列以添加
kueue.x-k8s.io/default-queue: "true"注解,它将该队列配置为默认本地队列。 尝试在
local_queue字段中指定值的情况下创建 Ray 集群。Validating Admission Policy 批准请求,即使未指定本地队列,也会创建 Ray 集群,因为使用了默认的本地队列。
验证是否为 PyTorchJobs 强制执行 local-queue 标签策略:
在新项目中完成以下步骤:
在配置本地队列前,请尝试创建 PyTorchJob。
Validating Admission Policy rejects 请求,并且没有创建 PyTorchJob,因为没有配置本地队列。
- 创建本地队列。
尝试创建 PyTorchJob,并在
labels字段中添加kueue.x-k8s.io/queue-name: <local-queue-name> 标签。Validating Admission Policy 批准请求,并创建了 PyTorchJob。
在
labels字段中指定kueue.x-k8s.io/queue-name标签的情况下,尝试创建 PyTorchJob。Validating Admission Policy rejects 请求,并且没有创建 PyTorchJob,因为没有指定本地队列。
8.4.2. 为所有项目禁用 local-queue 标签策略 复制链接链接已复制到粘贴板!
默认情况下,为所有项目强制执行 local-queue 标签策略。如果禁用了 local-queue 标签策略,可以创建不使用本地队列的 Ray 集群。但是,此类 Ray 集群的资源不由 Kueue 管理。
您可以通过编辑 ValidatingAdmissionPolicyBinding 资源,为所有项目禁用 local-queue 标签策略,如下所述。
先决条件
-
已使用
cluster-admin角色登录 OpenShift。 - 您已安装了所需的分布式工作负载组件,如 安装分布式工作负载组件 中所述(用于断开连接的环境,请参阅安装分布式工作负载组件)。
流程
- 在 OpenShift 控制台中,打开 Administrator 视角。
- 从 Project 列表中,选择 All Projects。
-
点 Home
Search。 - 在 Resources 列表中,搜索 ValidatingAdmissionPolicyBinding。
-
点
kue-validating-admission-policy-binding条目打开详情页面。 - 点 YAML 选项卡显示绑定规格。
编辑
policyName字段,将值更改为disabled,如下例所示:为所有项目禁用 local-queue 标签的示例
kind: ValidatingAdmissionPolicyBinding apiVersion: admissionregistration.k8s.io/v1 metadata: name: kueue-validating-admission-policy-binding uid: <Populated by the system. Read-only.> resourceVersion: <Populated by the system. Read-only.> generation: <Populated by the system. Read-only.> creationTimestamp: <Populated by the system. Read-only.> labels: app.kubernetes.io/component: controller app.kubernetes.io/name: kueue managedFields: spec: policyName: disabled matchResources: namespaceSelector: {} objectSelector: {} matchPolicy: Equivalent validationActions: - Deny- 点击 Save。
验证
验证 Ray 集群禁用了 local-queue 标签策略:
- 创建一个项目。
在新项目中完成以下步骤:
在配置本地队列前,请尝试创建 Ray 集群。
即使没有配置本地队列,也会创建 Ray 集群,因为无法强制执行 Validating Admission Policy。但是,Ray 集群资源不由 Kue 管理。
-
创建没有
default-queue注解的本地队列。 尝试创建 Ray 集群,并在
local_queue字段中指定 local-queue 名称。Ray 集群已创建,Ray 集群资源由 Kueue 管理。
尝试在
local_queue字段中指定值的情况下创建 Ray 集群。Ray 集群已创建,但 Ray 集群资源不受 Kue 管理。
-
编辑本地队列以添加
kueue.x-k8s.io/default-queue: "true"注解,它将该队列配置为默认本地队列。 尝试在
local_queue字段中指定值的情况下创建 Ray 集群。Ray 集群已创建,Ray 集群资源由 Kueue 管理。
验证 PyTorchJobs 禁用了 local-queue 标签策略:
- 创建一个项目。
在新项目中完成以下步骤:
在配置本地队列前,请尝试创建 PyTorchJob。
即使没有配置本地队列,也会创建 PyTorchJob,因为无法强制执行 Validating Admission Policy。PyTorchJob 资源不由 Kueue 管理。
- 创建本地队列。
尝试创建 PyTorchJob,并在
labels字段中添加kueue.x-k8s.io/queue-name: <local-queue-name> 标签。PyTorchJob 已创建,PyTyJob 资源由 Kueue 管理。
尝试在
labels字段中添加kueue.x-k8s.io/queue-name: <local-queue-name>标签的情况下创建 PyTorchJob。PyTorchJob 已创建,但 PyTorchJob 资源不由 Kue 管理。
8.4.3. 仅为某些项目强制 local-queue 标签策略 复制链接链接已复制到粘贴板!
强制 local-queue 标签策略时,只有在 将 Ray 集群和 PyTorchJobs 配置为使用本地队列时,才会创建 Ray 集群和 PyTorchJob 资源,然后由 Kueue 管理。禁用策略意味着可以创建 Ray 集群或 PyTorchJobs,它们不使用本地队列,但此类 Ray 集群或 PyTorchJobs 的资源不由 Kueue 管理。
默认情况下,为所有项目强制执行 local-queue 标签策略。Validating Admission Policy 对 RayCluster 和 PyTorchJob 资源强制执行。要只 为某些 项目强制执行 local-queue 标签策略,请按照以下步骤操作。
先决条件
-
已使用
cluster-admin角色登录 OpenShift。 - 您已安装了所需的分布式工作负载组件,如 安装分布式工作负载组件 中所述(用于断开连接的环境,请参阅安装分布式工作负载组件)。
流程
- 在 OpenShift 控制台中,打开 Administrator 视角。
- 从 Project 列表中,选择 All Projects。
-
点 Home
Search。 - 在 Resources 列表中,搜索 ValidatingAdmissionPolicyBinding。
-
点
kue-validating-admission-policy-binding条目打开详情页面。 - 点 YAML 选项卡显示绑定规格。
编辑
namespaceSelector字段以删除{}值,并添加matchLabels和kueue.openshift.io/managed值,如下例所示:重要kueue.openshift.io/managed=true标签只支持 OpenShift AI 项目。仅为某些项目强制执行 local-queue 标签示例
kind: ValidatingAdmissionPolicyBinding apiVersion: admissionregistration.k8s.io/v1 metadata: name: kueue-validating-admission-policy-binding uid: <Populated by the system. Read-only.> resourceVersion: <Populated by the system. Read-only.> generation: <Populated by the system. Read-only.> creationTimestamp: <Populated by the system. Read-only.> labels: app.kubernetes.io/component: controller app.kubernetes.io/name: kueue managedFields: spec: policyName: kueue-validating-admission-policy matchResources: namespaceSelector: matchLabels: kueue.openshift.io/managed: "true" objectSelector: {} matchPolicy: Equivalent validationActions: - Deny- 点击 Save。
运行以下命令,将
kue.openshift.io/managed标签添加到您要为其强制执行此策略的每个项目:将
kueue.openshift.io/managed标签添加到项目的命令示例oc label namespace <project-name> kueue.openshift.io/managed=true
验证
- 创建两个项目:项目 A 和项目 B。
-
将
kueue.openshift.io/managed标签添加到 Project A。 在每个项目中,尝试创建 Ray 集群或 PyTorchJob。
-
在项目 A 和具有
kue.openshift.io/managed标签的所有项目中,其行为如 为所有项目 强制 local-queue 标签策略 中所述。 -
在 Project B 和没有
kue.openshift.io/managed标签的项目中,其行为如 禁用所有项目的 local-queue 标签策略 中所述。
-
在项目 A 和具有