K8s client-go DeltaFIFO源码分析,如何深入理解其工作原理?

2026-05-27 14:180阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

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

K8s client-go DeltaFIFO源码分析,如何深入理解其工作原理?

使用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 DeltaFIFO源码分析,如何深入理解其工作原理?

使用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装有对象数据及对象的变化类型。

阅读全文