Informer 机制
informer 运行架构图
- Reflector 主要用于List 和watch 机制,List 用于获取indexer里面由controller缓存的数据,watch主要用于监听 api server获取 add update delete事件
- DeltaFIFO 主要由两部分组成,一分部是Delta,delta主要是一个资源存储对象(add update delete resync) ,另外一部分是FIFO 先进先出队列(Add、Update、Delete、List、Pop、Close)
- indexer 主要用于缓存controller所关心的informer资源,list 该资源的时候,不会对api 发起请求,从而减少对api server的压力,另外一部分用于Handle 从indexer里面检索数据
细化流程图
4. 从client-go把watch的数据进行存储在Indexer里面。
5. 触发event handlers,因为indexer存储的为NAMESPACE/NAME,在k8s里面存储在同一个namespace下面name是唯一的。
6. event handler 解析出来namespace/name然后存放进workqueue
7. process item 消费workqueue,获取到namespace/name ,由 handle从index里面通过namespace/name获取,元数据进行操作。