我正在从Kubernetes上的Spring Application的单个Pod(docker镜像)移动到多个Pod,以进行负载处理。但是我遇到了一个问题,因为我的应用程序中有一个cron调度程序方法,该方法每天在特定时间运行。如果我部署多个Pod,它们全部同时运行,结果多个条目被保存到数据库中,但是我只希望一个Pod执行该功能。
我已经考虑过生成Java uuid并将其保存在DB中,因为函数开始在每个Pod上执行。然后在相同的函数中,设置一个5秒的睡眠计时器,并比较每个Pod中来自DB的uuid。最近更新数据库中值的容器将与该值匹配,并将执行前面的方法。
这是一个好方法吗?如果没有,请提供解决此问题的建议。

最佳答案

另外,您可以将工作负载转移到一个独立的进程中,这将很有帮助且更清洁,请检查https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/可以给您一个想法。

08-19 20:03