此文档中的信息可能已过时
此文档的更新日期比原文晚,因此其中的信息可能已过时。如果能阅读英文,请查看英文版本以获取最新信息: Workload API
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 API 资源属于 scheduling.k8s.io/v1alpha1
API 组
(在使用此 API 之前,你的集群必须启用该 API 组以及 GenericWorkload
特性门控)。
此资源作为一种结构化、机器可读的定义,用于描述多 Pod 应用的调度需求。
面向用户的工作负载(例如 Job)定义“运行什么”,
而 Workload 资源则决定一组 Pod 应该如何被调度,以及在其整个生命周期中如何管理其调度位置。
Workload 允许你定义一组 Pod,并为其应用调度策略。 Workload 由两个部分组成:Pod 分组列表和到某个控制器的引用。
podGroups 列表定义了工作负载中的不同组件。
例如,一个机器学习任务可能包含一个 driver 分组和一个 worker 分组。
podGroups 中的每一项必须包含:
name,可在 Pod 的
Workload 引用中使用。basic 或 gang)。apiVersion: scheduling.k8s.io/v1alpha1
kind: Workload
metadata:
name: training-job-workload
namespace: some-ns
spec:
controllerRef:
apiGroup: batch
kind: Job
name: training-job
podGroups:
- name: workers
policy:
gang:
# 只有当可以同时运行 4 个 Pod 时,此 gang 才可调度
minCount: 4
controllerRef 字段用于将 Workload 关联回定义此应用的具体高层对象,
例如 Job 或定制 CRD。
这对于可观测性和工具链非常有用。此数据不会用于 Workload 的调度或管理。