如何在Operator重启时处理Kubernetes Operator中现有CR的并发事件?

y0u0uwnf  于 12个月前  发布在  Kubernetes
关注(0)|答案(1)|浏览(176)

我有一个操作员在监听CR。我正在使用状态中的observedGeneration来检查是否应该考虑处理一个协调事件。
如果metadata.generation == status.observedGenration,则操作员仅忽略协调事件。当操作员协调事件时,它工作正常。
但是当操作员重新启动时,我需要处理所有现有的CR,即使它是metadata.generation == status.observedGenration,因为操作员需要在内存中存储CR的最新状态。
是否有解决此问题的最佳实践,而不是保留有关已处理CR详细信息的本地缓存?

oogrdqng

oogrdqng1#

您需要处理操作符状态,我建议您将操作符状态的存储外部化,以便在重新启动之间保留此状态。
存储选项从ConfigMap或MySQL到数据库或分布式缓存,这取决于您的需求。
然后,您可以使用finalizer/生命周期事件onShutdown/容器生命周期事件preStop来更新该外部存储中的操作符状态,例如,指示操作符已重新启动。

相关问题