kubernetes中的informer机制可能是实现集群控制模块的最核心的设计之一了,本文从informer如何获取数据开始,然后介绍了为了减少apiserver而设计的缓存、索引、无界队列、共享informer等机制欢迎一起交流学习
1. informer的本质
1.1 设计目标
之前说到kubernetes里面的apiserver的只负责数据的CRUD接口实现,并不负责业务逻辑的处理,所以k8s中就通过外挂controller通过对应资源的控制器来负责事件的处理,controller如何感知事件呢?答案就是informer
1.2 基于chunk的消息通知
watcher的设计在之前的文章中已经介绍,服务端是如何将watcher感知到的事件发送给informer呢?我们提到过apiserver本质上就是一个http的rest接口实现,watch机制则也是基于http协议,不过不同于一般的get其通过chunk机制,来实现消息的通知
1.3 reflector
服务端通过chunk进行数据的发送,在客户端同样的需要根