我有一个操作员在监听CR。我正在使用状态中的observedGeneration
来检查是否应该考虑处理一个协调事件。
如果metadata.generation == status.observedGenration
,则操作员仅忽略协调事件。当操作员协调事件时,它工作正常。
但是当操作员重新启动时,我需要处理所有现有的CR,即使它是metadata.generation == status.observedGenration
,因为操作员需要在内存中存储CR的最新状态。
是否有解决此问题的最佳实践,而不是保留有关已处理CR详细信息的本地缓存?
1条答案
按热度按时间oogrdqng1#
您需要处理操作符状态,我建议您将操作符状态的存储外部化,以便在重新启动之间保留此状态。
存储选项从ConfigMap或MySQL到数据库或分布式缓存,这取决于您的需求。
然后,您可以使用
finalizer
/生命周期事件onShutdown
/容器生命周期事件preStop
来更新该外部存储中的操作符状态,例如,指示操作符已重新启动。