Kubernetes 中的分布式 CRON

Distributed CRON in Kubernetes

Kubernetes 中的分布式 CRON 仍在进行中 (https://github.com/kubernetes/kubernetes/issues/2156)。

您今天在 Kubernetes 中使用什么 CRON 作业?

您是否推荐任何适用于 Spring/JVM-based 服务的解决方案? Spring/JVM 启动时间非常长,如果 CRON 调度程序为每个作业启动一个新的 JVM,启动时间可能比实际工作时间长得多 - 是否有任何解决方案可以 运行 现有 JVM 中的作业?

谢谢, 雅库布

我认为Mesos Chronos仍然是理想的解决方案。

我写了一个小的 Go app,其功能类似于 cron,但将日志信息写入标准输出(无电子邮件!),并且可以构建为静态二进制文件以便于容器化。

我从源代码构建了 kubectl 作为静态二进制文件并将其包含在映像中(在最新版本中它可能是静态二进制文件)。 Kubectl 将自动在 /var/run/secrets/kubernetes.io/serviceaccount/ 中查找服务帐户 token/certs,因此除非您没有使用默认服务帐户,否则您应该一切顺利。

然后我设置了一个crontab to run kubectl to create a job at the period that I wanted. The crontab and yaml files for the jobs can be mounted as a secret. You can either use conf2kube or some other way of generating the secrets. I wrote a simple python script

在没有适当的支持之前,这完全是一种解决方法,但我希望能有所帮助。

我在 kubernetes 中使用 cron 作业 java,每个作业都会启动一个新的 JVM,所以没有。这里没有重用。 要重用,您必须始终 运行ning 并在这个已经 运行ning 的应用程序中将作业安排到 运行 之类的 webapp。