【发布时间】:2021-05-12 12:16:12
【问题描述】:
我有一个 CronJob,它被定义为禁止并发 (concurrencyPolicy: Forbid)。现在,由 CronJob 本身由 Job 启动的 Pod 会生成一个 Pod(这是我无法控制的),而 Pod 反过来也可能会或可能不会生成一个 Pod。
··········> ··········> time ··········> ··········>
CronJob
|
+-----------------------+----····
| |
schedules schedules
| |
v v
first Pod ~~~> Exit. first Pod ~~~> Exit.
| |
spawns spawns
| |
| ???? SECOND COMING OF SECOND POD CONCURRENT WITH FIRST
v
second Pod ~~~~~~ still running ~~~~~~>
现在第一个 Pod 很快退出,让 CronJob 控制器以为 Job 已完成。但该作业实际上仍在运行,因为它产生了一个 Pod。因此,下次 CronJob 调度 Job 时,它可能会生成一个 Pod,该 Pod 与第一个调度 Job 生成的其他 Pod 并发运行。这正是我想要阻止的。
有没有办法让我的第一个 pod(我可以完全控制第一个 pod,除了它生成一个 pod 并且我无法控制该 pod 中发生的事情或它是如何生成的,但我可以设置标签和注释)以某种方式将连续生成的 pod 添加到当前 Job 中,这样只有在这些 pod 返回时才被视为完成?
我目前的方法是我自己检查这些生成的 pod,但这很乏味,如果 kubernetes 中已经有解决方案,我更喜欢。此外,它还只是我的基础设施,因为清理工作剩余物的垃圾收集器也会清理这些 pod。
【问题讨论】:
标签: kubernetes cron jobs kubernetes-cronjob