在启动期间只有 1 个 pod 处理任务

Have only 1 pod process a task during startup

我的部署扩展到多个 pods。要求是每当应用程序启动时,我都希望执行一段代码。但我只想要一个 pod 来执行这段代码。如何实现?

现在我有办法 - 我在我的数据库中设置了一个标志并让我的 pods 读取该标志,它首先读取并锁定该标志将必须处理任务。

我的方法有什么缺点吗?有没有更好的方法来做到这一点?

我相信这是正确的做法。所有 pods 都需要有一种方法来了解是否其他人正在处理该任务,并且通过数据库进行处理是最佳选择。唯一的缺点是如果 pod 拾取它时无法更新标志状态怎么办。在那种情况下会发生什么?

我能想到的另一个选择可能是将消息发布到消息队列(在 pods、云平台之外维护的队列?)。这个想法是每当一个 pod 活跃时,他们将检查队列并处理它。它类似于您拥有的数据库方法。