Kubernetes 的 Informer 机制
在 Kubernetes 中,kube-apiserver 是整个集群的大脑和心脏,是控制集群的入口,所有模块都是通过其提供的 HTTP REST API 接口来操作集群的。
由于是所有模块的数据交互和通信的枢纽,大量组件直接通过 HTTP 请求 apiserver 带来的访问压力是非常大的。一但 apiserver 出现异常,整个集群就会受到影响,甚至崩溃。
所以尽可能降低 apiserver 的访问压力是很有必要的,Informer 机制就是 Kubernetes 解决这个问题的方案。Informer 本质就是 client-go
提供的一种本地缓存机制:
- 通过在本地缓存一份准实时的 Kubernetes 资源数据,应用在查询时直接从本地查询;
- 当资源变化时通过长连接将变更推送到本地 Informer 并更新本地缓存;
- 变更缓存后,触发本地的处理函数执行相关业务逻辑。
通过 Informer 机制,大大降低了 Kubernetes 各个组件跟与 API Server 的通信压力,同时 ETCD 的查询压力也同样得到缓解。