DeltaFIFO:DeltaFIFO是一个先进先出(FIFO)队列,用于存储资源对象的增量。它负责将Reflector产生的增量进行排序和缓存,以便Indexer能够按顺序消费这些增量。DeltaFIFO的设计使得Informer能够处理并发的资源对象变化,保证了资源对象同步的正确性。 Indexer:Indexer是Client-Go中用来存储资源对象并自带索引功能的本地存储。它从Delta...
r.store.Add、r.store.Update、r.store.Delete,结合前面文章的k8s informer的初始化与启动分析,或者简要的看一下下面的代码调用,就可以知道Reflector里的r.store其实就是DeltaFIFO,而那几个方法其实就是DeltaFIFO的Replace、Add、Update、Delete方法。
informer负责与Kubernetes APIServer进行Watch操作。资源可以是内置对象也可以是CRDinformer是一个带有本地缓存以及索引机制的核心工具包,当请求为查询操作时,优先从本地缓存中查找数据,而创建、更新、删除这类操作,根据事件通知写入到队列DeltaFIFO,同时对应事件处理过后,更新本地缓存,使本地缓存与ETCD数据保持一致。Informer...
监听对应的事件并将资源对象变化存放到本地队列DeltaFIFO中 DeltaFIFO:增量队列,记录资源变化的过程。Reflector是生产者。 Indexer:用来存储资源对象并自带索引功能的本地存储。Reflector从DeltaFIFO中将消费出来的资源对象存储到Indexer,Indexer数据与etcd保持一致。从而client-go可以本地读取,减少APIServer数据交互压力。 Reflecto...
Informer的架构主要包括三个核心组件:Reflector、Indexer和DeltaFIFO。 Reflector(反射器) Reflector是Informer的第一个核心组件。它的主要职责是监控指定的Kubernetes资源。通过Watch机制,Reflector能够实时捕获资源对象的变化,如添加、更新和删除等。当监控到资源发生变化时,Reflector会触发相应的事件,并将变化后的资源对象存放...
DeltaFIFO: 是一个FIFO队列的实现,用于存储和管理对象的变更。 TransformFunc: 是一个函数类型,用于将原始对象转换为期望的对象。 DeltaType: 用于表示对象的变更类型,包括添加、更新和删除。 Delta: 表示一个对象的变更。 Deltas: 是Delta对象的切片,用于存储多个对象的变更。 KeyListerGetter: 用于获取指定类型对象...
DeltaFIFO: 是一个FIFO队列的实现,用于存储和管理对象的变更。 TransformFunc: 是一个函数类型,用于将原始对象转换为期望的对象。 DeltaType: 用于表示对象的变更类型,包括添加、更新和删除。 Delta: 表示一个对象的变更。 Deltas: 是Delta对象的切片,用于存储多个对象的变更。
DeltaFIFO: 是一个FIFO队列的实现,用于存储和管理对象的变更。 TransformFunc: 是一个函数类型,用于将原始对象转换为期望的对象。 DeltaType: 用于表示对象的变更类型,包括添加、更新和删除。 Delta: 表示一个对象的变更。 Deltas: 是Delta对象的切片,用于存储多个对象的变更。
首先,再次明确本次实战的目标:开发出类似kubernetes的controller那样的功能,实时监听pod资源的变化,针对每个变化做出响应 今天的实战源自client-go的官方demo,其主要架构如下 可能您会觉得上图有些复杂,没关系,接下来咱们细说此图,为后面的编码打好理论基础
DeltaFIFO:增量队列,记录资源变化的过程。Reflector是生产者。Indexer:用来存储资源对象并自带索引功能的本地存储。Reflector从DeltaFIFO中将消费出来的资源对象存储到Indexer,Indexer数据与etcd保持一致。从而client-go可以本地读取,减少APIServer数据交互压力。ReflectorList-WatchList负责调用资源对应的RESTfulAPI接口获取全局数据...