K8s client-go源码中,informer模块是如何概要实现的?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1135个文字,预计阅读时间需要5分钟。
`K8s client-go 与 informers 实现了持续获取集群所有资源对象、监听资源对象变更的功能,并在本地维护了全部资源对象的内存缓存,以减少对 API Server 和 etcd 的请求压力。Informers 在启动时即开始工作。`
我们都知道可以使用k8s的Clientset来获取所有的原生资源对象,那么怎么能持续的获取集群的所有资源对象,或监听集群的资源对象数据的变化呢?这里不需要轮询去不断执行List操作,而是调用Watch接口,即可监听资源对象的变化,当资源对象发生变化,客户端即可通过Watch接口收到资源对象的变化。
Watch接口虽然可以直接使用,但一般情况下很少直接使用,因为往往由于集群中的资源较多,我们需要自己在客户端去维护一套缓存,而这个维护成本比较大。
也是因为如此,client-go提供了自己的实现机制,Informers应运而生。
本文共计1135个文字,预计阅读时间需要5分钟。
`K8s client-go 与 informers 实现了持续获取集群所有资源对象、监听资源对象变更的功能,并在本地维护了全部资源对象的内存缓存,以减少对 API Server 和 etcd 的请求压力。Informers 在启动时即开始工作。`
我们都知道可以使用k8s的Clientset来获取所有的原生资源对象,那么怎么能持续的获取集群的所有资源对象,或监听集群的资源对象数据的变化呢?这里不需要轮询去不断执行List操作,而是调用Watch接口,即可监听资源对象的变化,当资源对象发生变化,客户端即可通过Watch接口收到资源对象的变化。
Watch接口虽然可以直接使用,但一般情况下很少直接使用,因为往往由于集群中的资源较多,我们需要自己在客户端去维护一套缓存,而这个维护成本比较大。
也是因为如此,client-go提供了自己的实现机制,Informers应运而生。

