2.6. 配置配额


作为管理员,您可以使用红帽构建的 Kueue 来配置配额来优化用户工作负载的资源分配和系统吞吐量。您可以为 CPU、内存、pod 和 GPU 等计算资源配置配额。

您可以通过完成以下步骤,在红帽构建的 Kueue 中配置配额:

  1. 配置集群队列。
  2. 配置资源类别。
  3. 配置本地队列。

然后,用户可以将其工作负载提交到本地队列。

2.6.1. 配置集群队列

集群队列是一个集群范围的资源,由 ClusterQueue 对象表示,用于管理 CPU、内存和 pod 等资源池。集群队列可用于定义用量限值、资源类别配额、消耗顺序和公平共享规则。

注意

在同时配置了 ResourceFlavor 对象前,集群队列未就绪。

先决条件

  • 在集群中安装了 Red Hat build of Kueue Operator。
  • 有集群管理员权限或 kue-batch-admin-role 角色。
  • 已安装 OpenShift CLI(oc)。

流程

  1. ClusterQueue 对象创建为 YAML 文件:

    使用单个资源类别的基本 ClusterQueue 对象示例

    apiVersion: kueue.x-k8s.io/v1beta1
    kind: ClusterQueue
    metadata:
      name: cluster-queue
    spec:
      namespaceSelector: {} 
    1
    
      resourceGroups:
      - coveredResources: ["cpu", "memory", "pods", "foo.com/gpu"] 
    2
    
        flavors:
        - name: "default-flavor" 
    3
    
          resources: 
    4
    
          - name: "cpu"
            nominalQuota: 9
          - name: "memory"
            nominalQuota: 36Gi
          - name: "pods"
            nominalQuota: 5
          - name: "foo.com/gpu"
            nominalQuota: 100
    Copy to Clipboard Toggle word wrap

    1
    定义哪些命名空间可以使用由此集群队列管理的资源。示例所示的空 namespaceSelector 表示所有命名空间都可以使用这些资源。
    2
    定义由集群队列管理的资源类型。这个示例 ClusterQueue 对象管理 CPU、内存、pod 和 GPU 资源。
    3
    定义应用到列出的资源类型的资源类别。在本例中,default-flavor 资源类别应用于 CPU、内存、pod 和 GPU 资源。
    4
    定义接受作业的资源要求。这个示例集群队列仅在满足以下条件时接受作业:
    • CPU 请求总和小于或等于 9。
    • 内存请求总和小于或等于 36Gi。
    • pod 的总数小于或等于 5。
    • GPU 请求总和小于或等于 100。
  2. 运行以下命令来应用 ClusterQueue 对象:

    $ oc apply -f <filename>.yaml
    Copy to Clipboard Toggle word wrap

后续步骤

在同时配置了 ResourceFlavor 对象前,集群队列未就绪。

2.6.2. 配置资源类别

配置 ClusterQueue 对象后,您可以配置 ResourceFlavor 对象。

集群中的资源通常不是同构的。如果集群中的资源是同构的,您可以使用空 ResourceFlavor,而不是向自定义资源类型添加标签。

您可以使用自定义资源 Flavor 对象来代表通过标签、污点和容限与集群节点关联的不同资源变化。然后,您可以将工作负载与特定的节点类型关联,以启用精细的资源管理。

先决条件

  • 在集群中安装了 Red Hat build of Kueue Operator。
  • 有集群管理员权限或 kue-batch-admin-role 角色。
  • 已安装 OpenShift CLI(oc)。

流程

  1. ResourceFlavor 对象创建为 YAML 文件:

    ResourceFlavor 对象示例

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

    自定义资源 Flavor 对象示例

    apiVersion: kueue.x-k8s.io/v1beta1
    kind: ResourceFlavor
    metadata:
      name: "x86"
    spec:
      nodeLabels:
        cpu-arch: x86
    Copy to Clipboard Toggle word wrap

  2. 运行以下命令来应用 ResourceFlavor 对象:

    $ oc apply -f <filename>.yaml
    Copy to Clipboard Toggle word wrap

2.6.3. 配置本地队列

本地队列是一个命名空间对象,由 LocalQueue 对象表示,该对象对属于单个命名空间的紧密相关的工作负载进行分组。

作为管理员,您可以配置 LocalQueue 对象以指向集群队列。这会将资源从集群队列分配给 LocalQueue 对象中指定的命名空间中的工作负载。

先决条件

  • 在集群中安装了 Red Hat build of Kueue Operator。
  • 有集群管理员权限或 kue-batch-admin-role 角色。
  • 已安装 OpenShift CLI(oc)。
  • 您已创建了 ClusterQueue 对象。

流程

  1. 创建一个 LocalQueue 对象作为 YAML 文件:

    基本 LocalQueue 对象示例

    apiVersion: kueue.x-k8s.io/v1beta1
    kind: LocalQueue
    metadata:
      namespace: team-namespace
      name: user-queue
    spec:
      clusterQueue: cluster-queue
    Copy to Clipboard Toggle word wrap

  2. 运行以下命令来应用 LocalQueue 对象:

    $ oc apply -f <filename>.yaml
    Copy to Clipboard Toggle word wrap

2.6.4. 配置默认本地队列

作为集群管理员,您可以通过管理所选命名空间中的所有作业来提高集群中的配额强制,而无需显式标记每个作业。您可以通过创建默认的本地队列来完成此操作。

默认本地队列充当新创建的作业的本地队列,它们没有 kue.x-k8s.io/queue-name 标签。创建一个默认本地队列后,在该命名空间中创建的任何没有 kueue.x-k8s.io/queue-name 标签的新作业都会自动更新为带有 kue.x-k8s.io/queue-name: default 标签。

重要

当您创建默认本地队列时,命名空间中的预先存在的作业不会受到影响。如果在创建默认本地队列前命名空间中已存在作业,则必须明确将这些作业分配给队列。

先决条件

  • 您已在集群中安装了 Red Hat build of Kueue 版本 1.1。
  • 有集群管理员权限或 kue-batch-admin-role 角色。
  • 已安装 OpenShift CLI(oc)。
  • 您已创建了 ClusterQueue 对象。

流程

  1. 创建名为 defaultLocalQueue 对象,作为 YAML 文件:

    默认 LocalQueue 对象示例

    apiVersion: kueue.x-k8s.io/v1beta1
    kind: LocalQueue
    metadata:
      namespace: team-namespace
      name: default
    spec:
      clusterQueue: cluster-queue
    Copy to Clipboard Toggle word wrap

  2. 运行以下命令来应用 LocalQueue 对象:

    $ oc apply -f <filename>.yaml
    Copy to Clipboard Toggle word wrap

验证

  1. 在与默认本地队列相同的命名空间中创建作业。
  2. 使用 kueue.x-k8s.io/queue-name: default 标签观察作业更新。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat