List-Watch机制
List:全量事件Watch:增量事件
两者结合可以保证消息的可靠性、实时性、高性能。如果纯使用List也能获取所有事件,但是这会对ApiServer造成很大的压力,也很难满足实时性!
K8s每个资源的ResourceVersion
k8s的每个资源都会带有resourceVersion字段,数字递增
Informer
clinet-go中的一个核心工具包,List/Getk8s中的所有ObjectInformer会自己维护一个缓存,以便更快的返回资源信息Informer只会调用k8s的List、Watch两种API- 可监听事件并触发回调函数
Informer中可以添加自定义的回调函数:OnAdd()、OnUpdate()、OnDelete(),在Controller的设计实现中,会经常用到Informer这个功能

Informer在初始化时,会先调用List获取所有资源(仅调用1次)- 将
List得到的资源全部写入本地缓存 Watch Kubernetes Api资源,维护本地缓存
DeltaFIFO:存储Informer Watch返回的各种事件
LocalStore:只会被Lister的List/Get方法访问
DeltaFIFO和LocalStore之间存在resync机制!!!
K8s List-Watch与Informer机制解析
博客介绍了K8s的List-Watch机制,全量与增量事件结合可保证消息可靠、实时、高性能,纯使用某一种会有压力且难满足实时性。还阐述了K8s每个资源的特点,以及Informer作为核心工具包,维护缓存、监听事件、触发回调等功能。

733

被折叠的 条评论
为什么被折叠?



