我在 K8S 中配置了一个 CronJon,它每 10 分钟创建一个 pod。运行中的容器可以在 5 分钟到 2 小时内完成,无法判断。
有时,当计算花费很长时间时,我最终会创建太多的 pod。
有没有办法限制正在运行的 Pod 的数量、特定 CronJob 的实例?
编辑
澄清一下,我想要并发运行,我想将正在运行的并发实例的数量限制为一定的大数 N。
我在 K8S 中配置了一个 CronJon,它每 10 分钟创建一个 pod。运行中的容器可以在 5 分钟到 2 小时内完成,无法判断。
有时,当计算花费很长时间时,我最终会创建太多的 pod。
有没有办法限制正在运行的 Pod 的数量、特定 CronJob 的实例?
编辑
澄清一下,我想要并发运行,我想将正在运行的并发实例的数量限制为一定的大数 N。
参考
kubectl explain cronjob.spec.jobTemplate.spec
这将为您提供“并行度”键,您可以根据需要将“并行度”映射到数字“N”。
这将允许“N”个 pod 并行运行。
我想这会有所帮助。
跟进@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
这也意味着如果说只有三个实例仍在运行,则将跳过刻度,但这与我正在寻找的足够接近。