Informer
Indexer(informer中的Store对象)是存储的信息是:
- map[主键]对象
- 索引函数map[string]IndexFunc
- 索引->主键
Indexer是在process中更新的
DeltaFIFO是存储的:
- 队列,队列中存储的是主键
- map[主键]Deltas (Deltas是Delta数组,每个Delta对应一个变更事件,Delta中包含k8s资源对象)
从reflector的channel到DeltaFIFO的处理逻辑:*
k8s.io/client-go/tools/cache/reflector.go
func (r Reflector) watchHandler
process的处理逻辑:
k8s.io/client-go/tools/cache/shared_informer.go
func (s sharedIndexInformer) HandleDeltas(obj interface{})
这里根据indexer内的数据决定action是:Add、Update、Delete,*同时更新indexer的数据