快速开始
本页将通过一个最小的 JobSet 演示来帮助你确认 operator 是否正常工作,并介绍 JobSet 自定义资源中最常用的字段。
前提条件
- 已安装 JobSet Operator,且
jobset-system中的 controller pod 处于Running状态。请参阅 安装 JobSet。 - 可使用
kubectl访问目标集群。 - 一个用于运行演示的 namespace。以下示例使用
defaultnamespace;如有需要请替换。
JobSet CR 概览
JobSet CR 中最常用的字段如下:
运行一个简单演示
下面的示例定义了一个包含两个组的 JobSet:
leader:一个 Job,包含一个 pod,用于模拟 driver 进程。workers:一个 Job,包含四个并行 pod,用于模拟 workers。
当 leader 和 workers 都完成后,JobSet 即被标记为成功。
将清单保存为 jobset-quickstart.yaml:
应用它:
检查资源
确认 JobSet 已被接受,并且已创建子 Job:
预期结果:
- 一个名为
jobset-quickstart-leader-0的 Job,包含一个 pod。 - 一个名为
jobset-quickstart-workers-0的 Job,包含四个 pod。 - 一个名为
jobset-quickstart的无头 Service,用于为这些 pod 提供稳定的 DNS 主机名。
例如,查看某个 pod 的日志:
验证完成
大约 30 秒后,所有 pod 都会完成。确认 JobSet 状态:
成功的 JobSet 会报告一个 type: Completed 且 status: "True" 的 condition。子 Job 会显示其 COMPLETIONS 达到配置值(leader 为 1/1,workers 为 4/4)。
清理
删除演示资源:
删除 JobSet 会级联删除其子 Job、pod,以及为该 workload 创建的无头 Service。
后续步骤
如需了解更高级的模式,请参考上游示例和文档:
- JobSet 概念: https://jobset.sigs.k8s.io/docs/concepts/
- 上游示例: https://github.com/kubernetes-sigs/jobset/tree/main/site/static/examples(上游的
examples/是指向该路径的 symlink,因此 GitHub 的 tree 视图仅在实际位置下可用) - 成功和失败策略:可配置的成功条件(
Any/All)以及按错误类型进行的失败处理。 - 启动顺序:
spec.startupPolicy.startupPolicyOrder: InOrder强制执行先 leader 后 workers 的启动顺序。 - 独占放置:在 JobSet 上设置
alpha.jobset.sigs.k8s.io/exclusive-topology,可将每个子 Job 的 pod 共同放置在同一个 topology domain 中。 - Kueue 集成:将 JobSet 与 Alauda Build of Kueue 结合使用,以管理 batch workload 的队列和资源配额。