中文内容
Kubernetes v1.35:Job Managed By 正式 GA
在 Kubernetes v1.35 中,指定外部 Job 控制器的能力(通过 .spec.managedBy)正式达到通用可用(GA)阶段。
该功能允许外部控制器全权负责 Job 的协调(reconciliation),从而解锁了诸如结合 MultiKueue 实现多集群分发等强大的调度模式。
为何要委派 Job 的协调工作?
该功能的主要目的是支持多集群批量调度架构,例如 MultiKueue。
MultiKueue 架构将环境划分为管理集群(Management Cluster)与工作集群池(Worker Clusters):
- 管理集群负责分发 Job,但不负责实际执行。它需要接收 Job 对象以跟踪状态,但会跳过 Pod 的创建与执行过程。
- 工作集群负责接收分发来的 Job,并执行实际的 Pod。
- 用户通常与管理集群进行交互。由于状态会自动回传,他们无需访问工作集群即可“实时”查看 Job 的进度。
- 在工作集群中,分发的 Job 将作为常规 Job 运行,由内置的 Job 控制器进行管理,且未设置 .spec.managedBy。
通过配置 .spec.managedBy,管理集群上的 MultiKueue 控制器可接管 Job 的协调工作。它会将工作集群中运行的“镜像” Job 的状态同步回管理集群。
为什么不直接禁用 Job 控制器?虽然理论上可以通过完全禁用内置的 Job 控制器来实现,但这通常不可行或不切实际,原因有二:
- 托管控制平面(Managed Control Planes):在许多云环境中,Kubernetes 控制平面处于锁定状态,用户无法修改控制器管理器(controller manager)的启动参数。
- 混合集群角色:用户通常需要一种“混合”模式,即管理集群将部分重型工作负载分发至远程集群,同时仍在管理集群中执行规模较小或与控制平面相关的 Job。.spec.managedBy 允许针对每个 Job 实现这种细粒度控制。
.spec.managedBy 的工作原理
.spec.managedBy 字段用于指明负责该 Job 的控制器,具体包含两种运行模式:
- 标准:若未设置或设置为保留值 kubernetes.io/job-controller,内置的 Job 控制器将照常对 Job 进行协调(标准行为)。
- 委托:若设置为任何其他值,内置的 Job 控制器将完全跳过对该 Job 的协调。
为防止产生孤立 Pod 或资源泄漏,该字段不可变。您无法将正在运行的 Job 从一个控制器转移到另一个控制器。
如果您计划实现外部控制器,请注意您的控制器必须符合 Job API 的定义。为确保合规性,大量工作集中在引入全面的 Job 状态验证规则上。请参阅“如何进一步了解?”部分获取更多详情。
生态系统采用
.spec.managedBy 字段正迅速成为 Kubernetes 批处理生态系统中用于委托控制的标准接口。
多种自定义工作负载控制器正在添加此字段(或等效字段),以便允许 MultiKueue 接管其协调工作并在集群间进行编排:
- 正文:JobSet
- 正文:Kubeflow Trainer
- 正文:KubeRay
- 正文:AppWrapper
- 正文:Tekton Pipelines
虽然可以使用 .spec.managedBy 从头实现自定义的 Job 控制器,但我们尚未观察到此类实践。该功能专为支持委派模式(如 MultiKueue)而设计,从而避免重复造轮子。
如何进一步了解?
如果您想深入探究:
请阅读以下面向用户的文档:
- 正文:Jobs,
- 将 Job 对象的管理委派给外部控制器,以及
- 正文:MultiKueue。
深入了解设计历史:
- 关于 Job 的 managed-by 机制的 Kubernetes 增强提案 (KEP),其中包括引入全面的 Job 状态验证规则。
- 针对 MultiKueue 的 Kueue KEP。
在跨集群运行 Job 的任务指南中,探索 MultiKueue 在实践中如何使用 .spec.managedBy。
致谢
与任何 Kubernetes 特性一样,许多人通过设计讨论、评审、测试运行和缺陷报告,共同完善了这一特性。
我们特别感谢:
- Maciej Szulik - 感谢其提供的指导、导师带教与评审。
- Filip Křepinský - 感谢其提供的指导、导师带教与评审。
参与贡献
本工作由 Kubernetes Batch Working Group 赞助,在与 SIG Apps 紧密协作的同时,也得到了 SIG Scheduling 社区的重要贡献。
如果您对批处理调度、多集群解决方案或进一步改进 Job API 感兴趣:
- 欢迎参与 Batch WG 与 SIG Apps 的会议。
- 订阅 WG Batch Slack 频道。
- ← 上一页
- 下一页 →