K8s client-go源码中,informer模块是如何概要实现的?

2026-05-06 01:550阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1135个文字,预计阅读时间需要5分钟。

K8s client-go源码中,informer模块是如何概要实现的?

`K8s client-go 与 informers 实现了持续获取集群所有资源对象、监听资源对象变更的功能,并在本地维护了全部资源对象的内存缓存,以减少对 API Server 和 etcd 的请求压力。Informers 在启动时即开始工作。`

K8s client-go源码中,informer模块是如何概要实现的?

k8s client-go k8s informers实现了持续获取集群的所有资源对象、监听集群的资源对象变化功能,并在本地维护了全量资源对象的内存缓存,以减少对apiserver、对etcd的请求压力。Informers在启动的时候会首先在客户端调用List接口来获取全量的对象集合,然后通过Watch接口来获取增量的对象,然后更新本地缓存。 k8s informer概述

我们都知道可以使用k8s的Clientset来获取所有的原生资源对象,那么怎么能持续的获取集群的所有资源对象,或监听集群的资源对象数据的变化呢?这里不需要轮询去不断执行List操作,而是调用Watch接口,即可监听资源对象的变化,当资源对象发生变化,客户端即可通过Watch接口收到资源对象的变化。

Watch接口虽然可以直接使用,但一般情况下很少直接使用,因为往往由于集群中的资源较多,我们需要自己在客户端去维护一套缓存,而这个维护成本比较大。

也是因为如此,client-go提供了自己的实现机制,Informers应运而生。

阅读全文

本文共计1135个文字,预计阅读时间需要5分钟。

K8s client-go源码中,informer模块是如何概要实现的?

`K8s client-go 与 informers 实现了持续获取集群所有资源对象、监听资源对象变更的功能,并在本地维护了全部资源对象的内存缓存,以减少对 API Server 和 etcd 的请求压力。Informers 在启动时即开始工作。`

K8s client-go源码中,informer模块是如何概要实现的?

k8s client-go k8s informers实现了持续获取集群的所有资源对象、监听集群的资源对象变化功能,并在本地维护了全量资源对象的内存缓存,以减少对apiserver、对etcd的请求压力。Informers在启动的时候会首先在客户端调用List接口来获取全量的对象集合,然后通过Watch接口来获取增量的对象,然后更新本地缓存。 k8s informer概述

我们都知道可以使用k8s的Clientset来获取所有的原生资源对象,那么怎么能持续的获取集群的所有资源对象,或监听集群的资源对象数据的变化呢?这里不需要轮询去不断执行List操作,而是调用Watch接口,即可监听资源对象的变化,当资源对象发生变化,客户端即可通过Watch接口收到资源对象的变化。

Watch接口虽然可以直接使用,但一般情况下很少直接使用,因为往往由于集群中的资源较多,我们需要自己在客户端去维护一套缓存,而这个维护成本比较大。

也是因为如此,client-go提供了自己的实现机制,Informers应运而生。

阅读全文