4

我在 K8S 中配置了一个 CronJon,它每 10 分钟创建一个 pod。运行中的容器可以在 5 分钟到 2 小时内完成,无法判断。

有时,当计算花费很长时间时,我最终会创建太多的 pod。

有没有办法限制正在运行的 Pod 的数量、特定 CronJob 的实例?

编辑

澄清一下,我想要并发运行,我想将正在运行的并发实例的数量限制为一定的大数 N。

4

2 回答 2

1

参考

 kubectl explain cronjob.spec.jobTemplate.spec

这将为您提供“并行度”键,您可以根据需要将“并行度”映射到数字“N”。

这将允许“N”个 pod 并行运行。

我想这会有所帮助。

于 2020-01-02T07:14:47.910 回答
0

跟进@Tushar 的回复,结合这篇文章的信息:https ://www.alibabacloud.com/blog/kubernetes-cronjobs---part-2-parallelism_595022

解决方案是三个设置的组合,如果单独查看,它们是反指示的。

为了实现最多 10 个正在运行的 Pod,我执行了以下 cronjob 实例

      parallelism: 10        
      completions: 8

  concurrencyPolicy: Forbid

每次 tick 命中时,CronJob 将创建 10 个并行 Pod,但在下一个 Tick 上 - 除非之前的 8 个 Pod 已完成,否则不会触发运行,因为 concurrencyPolicy: Forbid

这也意味着如果说只有三个实例仍在运行,则将跳过刻度,但这与我正在寻找的足够接近。

于 2020-01-02T14:14:21.310 回答