我有一个批处理作业,它分解为 3 个任务,每个任务都依赖于之前的完成,然后才能开始:
- 运行单个 pod
- 并行运行 N 个 pod (
.spec.completions
=.spec.parallelism
= N) - 并行运行 M 个 pod (
.spec.completions
=.spec.parallelism
= M)
每个任务都有不同的资源需求(CPU/MEM/STORAGE)。目前,我开始作业#1,当它完成时,它运行一个kubectl
命令来启动作业#2,依此类推到作业#3。我有 3 份不同的工作。
我可以为这 3 个任务定义一个工作吗?
也许是这样的:
- 为任务 #1 运行单个 pod
- 在任务 #2 上定义初始化容器以等待任务 #1 完成
- 使用 N 为任务 #2 运行 N 个 pod
.spec.completions
- 在任务 # 上定义初始化容器以等待任务 #2 完成
.spec.completions
使用适用于任务 #3的不同方式为任务 #3 运行 M 个 pod
我不清楚我是否可以在同一个工作下为不同的 pod定义单独的.spec.parallelism
和不同的 pod。.spec.completions
如果我可以定义单独的初始化容器来延迟后续任务的启动。
这可能都需要一个更完整的工作流引擎,比如 Argo(我们还没有)。