运行 LeaderWorkerSet

将 LeaderWorkerSet 作为由 Kueue 管理的工作负载运行

本页面展示了如何通过运行 LeaderWorkerSet 来利用 Kueue 的调度和资源管理能力。

我们演示了如何支持调度 LeaderWorkerSet, 其中一组 Pod 构成由工作负载所表示的准入单元。 这允许逐组扩大和缩小 LeaderWorkerSet。

此集成基于普通的 Pod 组集成。

本指南适用于为用户提供服务并对 Kueue 有基本理解的人们。 有关更多信息,请参见 Kueue 概述

开始之前

  1. leaderworkerset.x-k8s.io/leaderworkerset 集成默认启用。

  2. 对于 Kueue v0.15 及更早版本,学习如何安装 Kueue 并使用自定义管理器配置, 并确保你已启用 leaderworkerset.x-k8s.io/leaderworkerset 集成,例如:

    apiVersion: config.kueue.x-k8s.io/v1beta2
    kind: Configuration
    integrations:
      frameworks:
       - "pod"
       - "leaderworkerset.x-k8s.io/leaderworkerset"
    

    同时,请参见运行普通 Pod 中所述的步骤, 了解如何启用和配置 Pod 集成。

  3. 查阅管理集群配额了解初始 Kueue 设置的详细信息。

运行一个由 Kueue 准入的 LeaderWorkerSet

运行 LeaderWorkerSet 时,请考虑以下方面:

a. 队列选择

目标本地队列应在 LeaderWorkerSet 配置的 metadata.labels 部分指定。

metadata:
   labels:
      kueue.x-k8s.io/queue-name: user-queue

b. 配置资源需求

工作负载的资源需求可以在 spec.template.spec.containers 中配置。

spec:
   leaderWorkerTemplate:
      leaderTemplate:
         spec:
            containers:
               - resources:
                    requests:
                       cpu: "100m"
      workerTemplate:
         spec:
            containers:
               - resources:
                    requests:
                       cpu: "100m"

c. 扩缩

你可以对 LeaderWorkerSet .spec.replicas 执行扩缩操作。

扩缩的单位是 LWS 组。通过更改 LWS 中的 replicas 数量, 你可以创建或删除整个 Pod 组。 扩容后,新建的 Pod 组会由调度门控挂起,直到相应的工作负载被准入为止。

示例

以下是一个 LeaderWorkerSet 的示例:

apiVersion: leaderworkerset.x-k8s.io/v1
kind: LeaderWorkerSet
metadata:
  name: nginx-leaderworkerset
  labels:
    app: nginx
    kueue.x-k8s.io/queue-name: user-queue
spec:
  replicas: 2
  leaderWorkerTemplate:
    leaderTemplate:
      spec:
        containers:
          - name: nginx-leader
            image: registry.k8s.io/nginx-slim:0.27
            resources:
              requests:
                cpu: "100m"
            ports:
              - containerPort: 80
    size: 3
    workerTemplate:
      spec:
        containers:
          - name: nginx-worker
            image: registry.k8s.io/nginx-slim:0.27
            resources:
              requests:
                cpu: "200m"
            ports:
              - containerPort: 80

你可以使用以下命令创建 LeaderWorkerSet:

kubectl create -f sample-leaderworkerset.yaml