K8s client-go DeltaFIFO源码分析,如何深入理解其工作原理?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2974个文字,预计阅读时间需要12分钟。
使用k8s client-go和informers实现持续获取集群所有资源对象、监听资源对象变化功能,并在本地维护了全部资源对象的内存缓存,以减少对apiserver和对etcd的请求压力。Informers在启动时执行以下操作:
k8s client-go k8s informers实现了持续获取集群的所有资源对象、监听集群的资源对象变化功能,并在本地维护了全量资源对象的内存缓存,以减少对apiserver、对etcd的请求压力。Informers在启动的时候会首先在客户端调用List接口来获取全量的对象集合,然后通过Watch接口来获取增量的对象,然后更新本地缓存。 client-go之DeltaFIFO源码分析 1.DeltaFIFO概述先从名字上来看,DeltaFIFO,首先它是一个FIFO,也就是一个先进先出的队列,而Delta代表变化的资源对象,其包含资源对象数据本身及其变化类型。
Delta的组成:
type Delta struct {
Type DeltaType
Object interface{}
}
DeltaFIFO的组成:
type DeltaFIFO struct {
...
items map[string]Deltas
queue []string
...
}
type Deltas []Delta
具体来说,DeltaFIFO存储着map[object key]Deltas以及object key的queue,Delta装有对象数据及对象的变化类型。
本文共计2974个文字,预计阅读时间需要12分钟。
使用k8s client-go和informers实现持续获取集群所有资源对象、监听资源对象变化功能,并在本地维护了全部资源对象的内存缓存,以减少对apiserver和对etcd的请求压力。Informers在启动时执行以下操作:
k8s client-go k8s informers实现了持续获取集群的所有资源对象、监听集群的资源对象变化功能,并在本地维护了全量资源对象的内存缓存,以减少对apiserver、对etcd的请求压力。Informers在启动的时候会首先在客户端调用List接口来获取全量的对象集合,然后通过Watch接口来获取增量的对象,然后更新本地缓存。 client-go之DeltaFIFO源码分析 1.DeltaFIFO概述先从名字上来看,DeltaFIFO,首先它是一个FIFO,也就是一个先进先出的队列,而Delta代表变化的资源对象,其包含资源对象数据本身及其变化类型。
Delta的组成:
type Delta struct {
Type DeltaType
Object interface{}
}
DeltaFIFO的组成:
type DeltaFIFO struct {
...
items map[string]Deltas
queue []string
...
}
type Deltas []Delta
具体来说,DeltaFIFO存储着map[object key]Deltas以及object key的queue,Delta装有对象数据及对象的变化类型。

