Kubernetes 集群 运行 Cronjob 只触发一个 pod

Kubernetes cluster running Cronjob triggering only one pod

我试图找到一个解决方案,如何 运行 集群中 2 pods 处理的作业。 该作业由 cronjob 调度程序运行,每(比如)15 分钟 运行。这项工作是从数据库 table 中获取记录并进行处理。仅提供读取权限以访问 table 记录。我想看看,有没有办法在 k8s 中配置,只有一个 pod 运行 工作。 这样我想防止重复处理。 替代方案是在持久存储中有一个临时锁文件,pod 中的应用程序对其加锁并在处理后释放。 如果 k8s 中有任何开箱即用的解决方案,请告诉我。

这是使用传统的资源锁机制实现的。在此过程中会创建一个锁定文件,如果存在任何锁定文件,pods 不会执行 运行。 这样,在任何时间点,只有一个 pods 会 运行 这份工作。