第 9 章 管理分布式工作负载


在 OpenShift AI 中,Py TyJobRayJobRayCluster 等分布式工作负载由相应的工作负载操作员创建和管理。Kueue 提供队列和准入控制,并与这些操作器集成,以决定工作负载是否可以根据集群范围的配额运行。

您可以为分布式工作负载环境执行高级配置,如更改 CodeFlare Operator 的默认行为或为 RDMA 设置集群。

9.1. 为分布式工作负载配置配额管理

通过创建 Kueue 资源,为分布式工作负载配置配额。配额可确保您可以在多个数据科学项目之间共享资源。

先决条件

流程

  1. 在一个终端窗口中,如果您还没有以集群管理员登录到 OpenShift 集群,请登录 OpenShift CLI,如下例所示:

    $ oc login <openshift_cluster_url> -u <admin_username> -p <password>
    Copy to Clipboard Toggle word wrap
  2. 验证资源类别是否存在或创建自定义类别,如下所示:

    1. 检查 ResourceFlavor 是否已已存在:

      $ oc get resourceflavors
      Copy to Clipboard Toggle word wrap
    2. 如果 ResourceFlavor 已存在,且您需要修改它,请编辑它:

      $ oc edit resourceflavor <existing_resourceflavor_name>
      Copy to Clipboard Toggle word wrap
    3. 如果 ResourceFlavor 不存在,或者您想要自定义资源,请创建一个名为 default_flavor.yaml 的文件,并使用以下内容填充它:

      空的 Kueue 资源类型

      apiVersion: kueue.x-k8s.io/v1beta1
      kind: ResourceFlavor
      metadata:
        name: <example_resource_flavor>
      Copy to Clipboard Toggle word wrap

      如需了解更多示例,请参阅 Kueue 资源配置示例

    4. 执行以下操作之一:

      • 如果要修改现有资源类别,请保存更改。
      • 如果要创建新资源类别,请应用配置来创建 ResourceFlavor 对象:

        $ oc apply -f default_flavor.yaml
        Copy to Clipboard Toggle word wrap
  3. 验证默认集群队列是否存在或创建自定义队列,如下所示:

    注意

    当 Kueue 集成被激活时,OpenShift AI 会自动创建一个默认集群队列。您可以验证和修改默认集群队列,或创建自定义队列。

    1. 检查 ClusterQueue 是否已存在:

      $ oc get clusterqueues
      Copy to Clipboard Toggle word wrap
    2. 如果 ClusterQueue 已存在,且您需要修改它(例如,要更改资源),请将它进行编辑:

      $ oc edit clusterqueue <existing_clusterqueue_name>
      Copy to Clipboard Toggle word wrap
    3. 如果 ClusterQueue 不存在或您想要自定义,请创建一个名为 cluster_queue.yaml 的文件,并使用以下内容填充它:

      集群队列示例

      apiVersion: kueue.x-k8s.io/v1beta1
      kind: ClusterQueue
      metadata:
        name: <example_cluster_queue>
      spec:
        namespaceSelector: {}  
      1
      
        resourceGroups:
        - coveredResources: ["cpu", "memory", "nvidia.com/gpu"]  
      2
      
          flavors:
          - name: "<resource_flavor_name>"  
      3
      
            resources:  
      4
      
            - name: "cpu"
              nominalQuota: 9
            - name: "memory"
              nominalQuota: 36Gi
            - name: "nvidia.com/gpu"
              nominalQuota: 5
      Copy to Clipboard Toggle word wrap

      1
      定义哪些命名空间可以使用由此集群队列管理的资源。示例所示的空 namespaceSelector 表示所有命名空间都可以使用这些资源。
      2
      定义由集群队列管理的资源类型。这个示例 ClusterQueue 对象管理 CPU、内存和 GPU 资源。如果使用 AMD GPU,在示例代码中将 nvidia.com/gpu 替换为 amd.com/gpu
      3
      定义应用到列出的资源类型的资源类别。在本例中,<resource_flavor_name> 资源类别应用到 CPU、内存和 GPU 资源。
      4
      定义接受作业的资源要求。只有所需资源达到这些配额限制时,集群队列才会启动分布式工作负载。
    4. 将示例配额值(9 CPU、36 GiB 内存和 5 NVIDIA GPU)替换为集群队列的适当值。如果使用 AMD GPU,在示例代码中将 nvidia.com/gpu 替换为 amd.com/gpu。如需了解更多示例,请参阅 Kueue 资源配置示例

      您必须为每个用户可以请求的资源指定一个配额,即使请求的值为 0,更新 spec.resourceGroups 部分,如下所示:

      • coveredResources 列表中包含资源名称。
      • flavor.resources 部分中指定 资源名称nominalQuota,即使 nominalQuota 值为 0。
    5. 执行以下操作之一:

      • 如果要修改现有集群队列,请保存更改。
      • 如果要创建新集群队列,请应用配置来创建 ClusterQueue 对象:

        $ oc apply -f cluster_queue.yaml
        Copy to Clipboard Toggle word wrap
  4. 验证项目命名空间是否存在指向集群队列的本地队列,或创建自定义队列,如下所示:

    注意

    如果在 OpenShift AI 仪表板中启用了 Kueue,则会为 Kue management 自动配置从仪表板创建的新项目。在这些命名空间中,默认的本地队列可能已存在。您可以验证和修改本地队列,或创建自定义队列。

    1. 检查项目命名空间的 LocalQueue 是否已存在:

      $ oc get localqueues -n <project_namespace>
      Copy to Clipboard Toggle word wrap
    2. 如果 LocalQueue 已存在,并且您需要修改它(例如,指向不同的 ClusterQueue),请将其编辑为位:

      $ oc edit localqueue <existing_localqueue_name> -n <project_namespace>
      Copy to Clipboard Toggle word wrap
    3. 如果 LocalQueue 不存在或您想要自定义,请创建一个名为 local_queue.yaml 的文件,并使用以下内容填充它:

      本地队列示例

      apiVersion: kueue.x-k8s.io/v1beta1
      kind: LocalQueue
      metadata:
        name: <example_local_queue>
        namespace: <project_namespace>
      spec:
        clusterQueue: <cluster_queue_name>
      Copy to Clipboard Toggle word wrap

    4. 相应地替换 名称namespaceclusterQueue 值。
    5. 执行以下操作之一:

      • 如果您要修改现有的本地队列,请保存更改。
      • 如果要创建新的本地队列,请应用配置来创建 LocalQueue 对象:

        $ oc apply -f local_queue.yaml
        Copy to Clipboard Toggle word wrap

验证

检查项目中本地队列的状态,如下所示:

$ oc get localqueues -n <project_namespace>
Copy to Clipboard Toggle word wrap
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部