运行 LeaderWorkerSet

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

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

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

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

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

开始之前

  1. 学习如何安装 Kueue 并使用自定义管理器配置

  2. 确保你已启用 leaderworkerset.x-k8s.io/leaderworkerset 集成,例如:

    apiVersion: config.kueue.x-k8s.io/v1beta1
    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

最后修改 August 4, 2025: doc (#6446) (2ed0ac21)