Workload API

此文档中的信息可能已过时

此文档的更新日期比原文晚,因此其中的信息可能已过时。如果能阅读英文,请查看英文版本以获取最新信息: Workload API

Workload API

特性状态: Beta since Kubernetes v1.37; (默认禁用)
More information about this feature

To use this feature, you (or a cluster administrator) will need to enable the GenericWorkload feature gate for all relevant components in your cluster.

See Enable Or Disable Feature Gates for more information.

Workload API 资源允许你描述一个多 Pod 应用的调度需求和结构。 虽然工作负载控制器提供了运行时行为,但 Workload API 旨在为“真实”的工作负载(例如 Job 等)提供调度约束。

什么是 Workload?

Workload API 资源属于 scheduling.k8s.io/v1alpha1 API 组 (在使用此 API 之前,你的集群必须启用该 API 组以及 GenericWorkload 特性门控)。 此资源作为一种结构化、机器可读的定义,用于描述多 Pod 应用的调度需求。 面向用户的工作负载(例如 Job)定义“运行什么”, 而 Workload 资源则决定一组 Pod 应该如何被调度,以及在其整个生命周期中如何管理其调度位置。

API 结构

Workload 允许你定义一组 Pod,并为其应用调度策略。 Workload 由两个部分组成:Pod 分组列表和到某个控制器的引用。

PodGroupTemplates

spec.podGroupTemplates 列表定义了你的工作负载的不同组件。 例如,一个机器学习作业可能有一个 driver 模板和一个 worker 模板。

podGroupTemplates 中的每个条目必须包含:

  1. 一个唯一的 name,用于在 PodGroupspec.podGroupTemplateRef 中引用此模板。
  2. 一个调度策略basicgang)。

如果启用了 WorkloadAwarePreemption 特性门控, 则 podGroups 中的每个条目也可以有优先级和干扰模式

单个工作负载中 PodGroupTemplates 的最大数量为 8。

apiVersion: scheduling.k8s.io/v1alpha2
kind: Workload
metadata:
  name: training-job-workload
  namespace: some-ns
spec:
  controllerRef:
    apiGroup: batch
    kind: Job
    name: training-job
  podGroupTemplates:
  - name: workers
    schedulingPolicy:
      gang:
        # 只有当 4 个 Pod 可以同时运行时,该进程才能被调度。
        minCount: 4
    priorityClassName: high-priority # 仅适用于启用 WorkloadAwarePreemption 特性门控的情况
    disruptionMode: PodGroup # 仅适用于启用 WorkloadAwarePreemption 特性门控的情况

当工作负载控制器根据这些模板之一创建 PodGroup 时, 它会将 schedulingPolicy 复制到 PodGroup 自身的规范中。 对 Workload 的更改只会影响新创建的 PodGroup,而不会影响已存在的 PodGroup

引用工作负载控制对象

controllerRef 字段用于将 Workload 关联回定义此应用的具体高层对象, 例如 Job 或定制 CRD。 这对于可观测性和工具链非常有用。此数据不会用于 Workload 的调度或管理。

使用 Job 进行 Gang 调度

特性状态: Alpha since Kubernetes v1.36; (默认禁用)
More information about this feature

To use this feature, you (or a cluster administrator) will need to enable the WorkloadWithJob feature gate for all relevant components in your cluster.

See Enable Or Disable Feature Gates for more information.

当启用了 WorkloadWithJob 特性门控时,Job 控制器会自动为并行索引 Job 创建 Workload 和 PodGroup 对象, 其中 .spec.parallelism 等于 .spec.completions。 Gang 策略的 minCount 被设置为 Job 的并行度,因此所有 Pod 必须能够一起调度, 然后它们中的任何一个才能绑定到节点。

这是使用 Job 进行 Gang 调度的内置路径。你不需要自己创建 Workload 或 PodGroup 对象,因为 Job 控制器会自动处理。 其他工作负载控制器(如 JobSet)可能会独立管理自己的 Workload 和 PodGroup 对象。

接下来

最后修改 June 15, 2026 at 11:08 AM PST: [zh-cn]sync workload-api/_index (4c22480ab2)