一个Kubernetes作业可以包含多个具有不同并行度定义的Pod吗? [英] Can a single kubernetes job contain multiple pods with different parallelism definitions?

查看:9
本文介绍了一个Kubernetes作业可以包含多个具有不同并行度定义的Pod吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个批处理作业,它分为3个任务,每个任务都依赖于前一次完成,然后才能开始:

  1. 运行单个Pod
  2. 并行运行N个Pod(.spec.completions=.spec.parallelism=N)
  3. 并行运行M个Pod(.spec.completions=.spec.parallelism=M)

每个任务都有不同的资源要求(CPU/MEM/存储)。目前,我启动作业1,当它完成时,运行kubectl命令启动作业2,依此类推到作业3。我有3个独立的作业。

我可以为这3项任务定义单个作业吗?

可能是这样的:

  1. 为任务1运行单个Pod
  2. 在任务#2上定义初始化容器以等待任务#1完成
  3. 使用.spec.completions为任务#2运行N个Pod
  4. 在任务#上定义初始化容器以等待任务#2完成
  5. 使用适用于任务#3的其他.spec.completions运行任务#3的M个Pod

我不清楚是否可以为同一作业下的不同Pod分别定义.spec.parallelism.spec.completions。以及我是否可以定义单独的初始化容器以延迟后续任务的开始。

这一切可能都需要像Argo这样更完整的工作流引擎(我们还没有可用的)。

推荐答案

Kubernetes作业控制器基于作业规格中的单实例模板创建实例。所以不能在一个作业中有多个Pod

但Kubernetes是一个可扩展的系统,您可以定义自己的Custom Resource,并编写一个类似于作业控制器的控制器,它支持不同并行程度的多个Pod模板。

这篇关于一个Kubernetes作业可以包含多个具有不同并行度定义的Pod吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆