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 资源。资源使用默认值自动创建。不需要其他操作。
  • 按照此流程中所述编辑现有资源。

先决条件

流程

  1. 在 OpenShift 控制台中,打开 Administrator 视角。
  2. Project 列表中,选择 All Projects
  3. Home Search
  4. Resources 列表中,搜索 ValidatingAdmissionPolicyBinding
  5. kue-validating-admission-policy-binding 条目打开详情页面。
  6. YAML 选项卡显示绑定规格。
  7. 确保将以下字段设置为指定的值:

    为所有项目强制执行 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

  8. 如果您进行任何更改,请单击 Save

验证

要验证是否为 Ray 集群强制执行 local-queue 标签策略:

  1. 创建一个项目。
  2. 在新项目中完成以下步骤:

    1. 在配置本地队列前,请尝试创建 Ray 集群。

      Validating Admission Policy 拒绝请求,Ray 集群不会被创建,因为没有配置本地队列。

    2. 创建没有 default-queue 注解的本地队列。
    3. 尝试创建 Ray 集群,并在 local_queue 字段中指定 local-queue 名称。

      Validating Admission Policy 批准请求,并创建了 Ray 集群。

    4. 尝试在 local_queue 字段中指定值的情况下创建 Ray 集群。

      Validating Admission Policy rejects 请求,Ray 集群没有被创建,因为没有指定本地队列,且没有配置默认的本地队列。

    5. 编辑本地队列以添加 kueue.x-k8s.io/default-queue: "true" 注解,它将该队列配置为默认本地队列。
    6. 尝试在 local_queue 字段中指定值的情况下创建 Ray 集群。

      Validating Admission Policy 批准请求,即使未指定本地队列,也会创建 Ray 集群,因为使用了默认的本地队列。

验证是否为 PyTorchJobs 强制执行 local-queue 标签策略:

  1. 在新项目中完成以下步骤:

    1. 在配置本地队列前,请尝试创建 PyTorchJob。

      Validating Admission Policy rejects 请求,并且没有创建 PyTorchJob,因为没有配置本地队列。

    2. 创建本地队列。
    3. 尝试创建 PyTorchJob,并在 labels 字段中添加 kueue.x-k8s.io/queue-name: <local-queue-name > 标签。

      Validating Admission Policy 批准请求,并创建了 PyTorchJob。

    4. 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 标签策略,如下所述。

先决条件

流程

  1. 在 OpenShift 控制台中,打开 Administrator 视角。
  2. Project 列表中,选择 All Projects
  3. Home Search
  4. Resources 列表中,搜索 ValidatingAdmissionPolicyBinding
  5. kue-validating-admission-policy-binding 条目打开详情页面。
  6. YAML 选项卡显示绑定规格。
  7. 编辑 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

  8. 点击 Save

验证

验证 Ray 集群禁用了 local-queue 标签策略:

  1. 创建一个项目。
  2. 在新项目中完成以下步骤:

    1. 在配置本地队列前,请尝试创建 Ray 集群。

      即使没有配置本地队列,也会创建 Ray 集群,因为无法强制执行 Validating Admission Policy。但是,Ray 集群资源不由 Kue 管理。

    2. 创建没有 default-queue 注解的本地队列。
    3. 尝试创建 Ray 集群,并在 local_queue 字段中指定 local-queue 名称。

      Ray 集群已创建,Ray 集群资源由 Kueue 管理。

    4. 尝试在 local_queue 字段中指定值的情况下创建 Ray 集群。

      Ray 集群已创建,但 Ray 集群资源不受 Kue 管理。

    5. 编辑本地队列以添加 kueue.x-k8s.io/default-queue: "true" 注解,它将该队列配置为默认本地队列。
    6. 尝试在 local_queue 字段中指定值的情况下创建 Ray 集群。

      Ray 集群已创建,Ray 集群资源由 Kueue 管理。

验证 PyTorchJobs 禁用了 local-queue 标签策略:

  1. 创建一个项目。
  2. 在新项目中完成以下步骤:

    1. 在配置本地队列前,请尝试创建 PyTorchJob。

      即使没有配置本地队列,也会创建 PyTorchJob,因为无法强制执行 Validating Admission Policy。PyTorchJob 资源不由 Kueue 管理。

    2. 创建本地队列。
    3. 尝试创建 PyTorchJob,并在 labels 字段中添加 kueue.x-k8s.io/queue-name: <local-queue-name > 标签。

      PyTorchJob 已创建,PyTyJob 资源由 Kueue 管理。

    4. 尝试在 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 标签策略,请按照以下步骤操作。

先决条件

流程

  1. 在 OpenShift 控制台中,打开 Administrator 视角。
  2. Project 列表中,选择 All Projects
  3. Home Search
  4. Resources 列表中,搜索 ValidatingAdmissionPolicyBinding
  5. kue-validating-admission-policy-binding 条目打开详情页面。
  6. YAML 选项卡显示绑定规格。
  7. 编辑 namespaceSelector 字段以删除 {} 值,并添加 matchLabelskueue.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

  8. 点击 Save
  9. 运行以下命令,将 kue.openshift.io/managed 标签添加到您要为其强制执行此策略的每个项目:

    kueue.openshift.io/managed 标签添加到项目的命令示例

    oc label namespace <project-name> kueue.openshift.io/managed=true

验证

  1. 创建两个项目:项目 A 和项目 B。
  2. kueue.openshift.io/managed 标签添加到 Project A。
  3. 在每个项目中,尝试创建 Ray 集群或 PyTorchJob。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部