博主vx: haitangyijiusu 。很高兴认识你!偶尔带huo,都是精挑细选信得过的产品,欢迎来支持,期待和您相遇!
核心模块
Informer只要由如下几个模块组成:
- Reflector
- Informer
- Indexer
其架构图如下:
Reflector
通过上图,可以看到,Reflector内部实现了ListWatch机制,可以感知资源的变化,一个ListWatch只对应一种资源,包括k8s的内置资源,也可以是用户自定义的资源。当感知到资源的创建、更新、删除时,将资源放到Delta FIFO的队列里。
Informer
Informer是我们要监听的资源的代码抽象,在Controller的驱动下运行,将Delta FIFO中的数据弹出,然后将数据传送给Indexer。同时Informer也会将数据分发到自定义的Controller中进行事件处理(步骤6)
Indexer
从字面上理解,Indexer是索引器,就是Informer的LocalStore。而索引之于存储,就比如MySQL表上建立的索引,会使查询速度加快,重要性不言而喻。
参考资料