运行 StatefulSet

将 StatefulSet 作为 Kueue 管理的工作负载运行。

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

我们演示了如何支持基于 Plain Pod Group 集成来调度 StatefulSet,其中 StatefulSet 被表示为一个独立的负载。

本指南适用于服务用户他们具有基本的 Kueue 理解。 更多信息,请参见 Kueue 概览

开始之前

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

  2. 确保你启用了 v1/statefulset 集成,例如:

    apiVersion: config.kueue.x-k8s.io/v1beta1
    kind: Configuration
    integrations:
      frameworks:
       - "pod" # required by statefulset
       - "statefulset"
    

    同时,请参见运行 Plain Pod 了解如何启用和配置 pod 集成。

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

运行被 Kueue 调度的 StatefulSet

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

a. 队列选择

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

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

b. 配置资源需求

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

spec:
  template:
     spec:
      containers:
       - resources:
           requests:
             cpu: 3

c. 扩缩

目前,StatefulSet 的扩缩操作不受支持。 这意味着你不能直接通过 Kueue 执行扩缩容操作。

示例

以下是一个 StatefulSet 的示例:

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: nginx-statefulset
  labels:
    app: nginx
    kueue.x-k8s.io/queue-name: user-queue
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx
          image: registry.k8s.io/nginx-slim:0.27
          ports:
            - containerPort: 80
          resources:
            requests:
              cpu: "100m"
  serviceName: "nginx"

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

kubectl create -f sample-statefulset.yaml

最后修改 July 30, 2025: doc (#6282) (45358782)