SharedIndexInformer的Indexer的ThreadSafeStore是否曾被清空过?

问题描述 投票:0回答:1

我正在小心翼翼地通过tools/cache package中的Go代码,这似乎是第100次。

通过仔细阅读代码,当您创建新的SharedIndexInformer时,会发生以下情况:

  1. SharedIndexInformer creates a new Indexer
  2. Indexer在内部创建了creates a new ThreadSafeStore,用于持有Kubernetes资源的表示。
  3. SharedIndexInformer.Run() creates a new DeltaFIFO with the new Indexer作为其第二个参数。
  4. The Indexer supplied to the new DeltaFIFO therefore functions as its KeyLister and its KeyGetter。 (这用于跟踪删除的“先前状态”;即如果其中有一个对象但最近与Kubernetes同步不包含该对象,则我们知道它已从群集中删除。)
  5. 添加,更新或删除Kubernetes资源时的HandleDeltas function is the one that the underlying controller will call
  6. HandleDeltas函数将在Add上调用UpdateDeleteIndexer方法(并且,在其基础上的ThreadSafeStore)。

假设我使用SharedIndexInformer编写一个新的控制器。让我们进一步说它正在关注Pods。让我们最后说集群中有10个Pods。

这是否意味着在调用SharedIndexInformerRun方法并且已经过了一些必要的时间之后,Pod中将有10个jaz表示ThreadSafeStores,而且,在实际删除之前,没有任何一个将从该商店中删除其中一个相应的Pods发生在Kubernetes?

kubernetes
1个回答
0
投票

正确,除了JSON部分。

Store包含本机Object结构,从protobuf消息反序列化。

© www.soinside.com 2019 - 2024. All rights reserved.