在Reflector调用List/Watch方法后,数据会存入DeltaFIFO这个先进先出的队列。从名称上看,DeltaFIFO需要分2部分来理解,FIFO(First Input First Output,先进先出)是指和正常的先进先出队列一样有基本的操作方法,例如Add、Delete、Update、List、Pop等;Delta则是一个资源对象的存储,用来保存资源对象的操作类型。源码路径为k
原创
2023-03-05 09:34:54
46阅读
前文我们讲到 Reflector 中通过 ListAndWatch 获取到数据后传入到了本地的存储中,也就是 DeltaFIFO 中。从 DeltaFIFO 的名字可以看出它是一个 FIFO,也就是一个先进先出的队列,而 Delta 表示的是变化的资源对象存储,包含操作资源对象的类型和数据,Reflector 就是这个队列的生产者。Delta在了解 DeltaFIFO 之前我们需要先具体了解下什么
原创
2021-01-07 16:10:56
864阅读
DeltaFIFO是K8s中用来存储处理数据的Queue,相较于传统的FIFO,它不仅仅存储了数据保证了先进先出,而且存储有K8s 资源对象的类型。是连接Reflector(生产者)和indexer(消费者)的重要通道。
原创
2022-02-24 16:15:08
348阅读
点赞
第四课 k8s源码学习和二次开发-DeltaFIFO和Indexer原理学习tags:k8s源码学习categories:源码学习二次开发 文章目录第四课 k8s源码学习和二次开发-DeltaFIFO和Indexer原理学习第一节 DeltaFIFO学习1.1 Delta介绍1.2 FIFO介绍1.3 FIFO简单方法实现1.4 DeltaFIFO的实现1.5 DeltaFIFO和Reflecto
上图可见Controller 由五个部分组成,分别为Informer、Callback、workqueue、worker、以及Clients,其中Informer分为三部分分别是:Reflector、DeltaFIFO、LocalStore。1. ReflectorReflector 的核心作用有两个:一是获取到所有Reflector中定义的资源然后 sync 到DeltaFIFO中,二是对资源进
k8s client-go源码分析 informer源码分析(3)-Reflector源码分析1.Reflector概述Reflector从kube-apiserver中list&watch资源对象,然后将对象的变化包装成Delta并将其丢到DeltaFIFO中。简单点来说,就是将Etcd 的对象及其变化反射到DeltaFIFO中。Reflector首先通过List操作获取全量的资源对象数
摘要:DeltaFIFO是K8s中用来存储处理数据的Queue,相较于传统的FIFO,它不仅仅存储了数据保证了先进先出,而且存储有K8s资源对象的类型。是连接Reflector(生产者)和indexer(消费者)的重要通道。
,作者: kaliarch 。DeltaFIFO是K8s中用来存储处理数据的Queue,相较于传统的FIFO,它不仅仅存储了数据保证了先进先出,而且存储有K8s 资源
通过本文,可以了解Reflector通过ListWatcher从Kubernetes API中获取对象的流程,以及存储到store中,后续会对DeltaFIFO进行源码研读,通过结合informer,来加深对整个informer的理解。
原创
2022-02-22 15:45:21
1274阅读
点赞
informer机制的作用:informer机制的主要对象Reflector: reflector 用来直接和 k8s api server 通信,内部实现了 listwatch 机制DeltaFIFO:更新队列in
Controller作为核心中枢,集成了Reflector、DeltaFIFO、Indexer等组件,成为连接下游消费者的桥梁。Informer组件的启动,以及数据在几个组件之间的传递都由Controller完成。Controller的定义如下。type controller struct { config Config reflector *Reflecto
原创
2023-03-05 09:34:08
163阅读
文章目录1、介绍1.1 简单使用1.2 List & Watch1.3 informer简介2、store2.1 ThreadSafeMap建立索引:threadSafeMap源码分析:2.2 Indexer2.3 DeltaFIFO3、reflector3.1 Reflector的定义3.2 Reflector的创建3.3 Reflector的循环执行3.4 List操作3.5 Wat
Reflector 的代码比较繁琐但是功能比较简单,就是通过 sharedIndexInformer 里定义的 listerWatcher 进行 List-Watch,并将获得的事件推入 DeltaFIFO 中。一、Reflector简介和初始化1.简介informer可以对kubernetes api server 的资源执行监控(watch)操作 ,类型可以是kubernetes内置资源也可以
K8S Informer机制分析一、总体组件介绍
Reflector: 通过 Kubernetes API 监控 Kubernetes 的资源类型 采用 List/Watch 机制, 可以 Watch 任何资源包括 CRD 添加 object 对象到 DeltaFIFO 队列,然后 Informer 会从队列里面取数据进行处理。Reflector 会和 apiServer 建立长连接,并使
client-go之Controller&Processor源码分析1.controller与Processor概述ControllerController从DeltaFIFO中pop Deltas出来处理,根据对象的变化更新Indexer本地缓存,并通知Processor相关对象有变化事件发生。ProcessorProcessor根据Controller的通知,即根据对象的变化事件类型,
摘要:通过本文,可以了解Reflector通过ListWatcher从Kubernetes API中获取对象的流程,以及存储到store中,后续会对DeltaFIFO进行源码研读,通过结合informer,来加深对整个informer的理解。作者: kaliarch 。一 背景Reflector 是保证 Informer 可靠性的核心组件,在丢失事件,收到异常事件,处理事件失败等多种异常情况下需要
前言Controller,中文翻译是控制器。本文的Controller是SharedIndexInformer的控制器,不是kube-controller-manager的控制器,所以千万不要搞混概念,虽然他们都叫控制器。既然叫控制器,那么它控制什么呢?还记得这个经典的图片么?Controller就是负责从Reflector接手Deltas并发送到DeltaFIFO的过程,看起来确实控制了Delt
图片来源:https://unsplash.com/photos/mFl5WwGJnTs前面我们说了Informer通过对APIServer的资源对象执行List和Watch操作,把获取到的数据存储在本地的缓存中,其中实现这个的核心功能就是Reflector,我们可以称其为反射器,从名字我们可以看出来它的主要功能就是反射,就是将Etcd里面的数据反射到本地存储(DeltaFIFO)中。Reflec
原创
2021-01-07 16:04:30
500阅读
前面我们讲到 DeltaFIFO 中的元素通过 Pop 函数弹出后,在指定的回调函数中将元素添加到了 Indexer 中。Indexer 是什么?字面意思是索引器,它就是 Informer 中的 LocalStore 部分,我们可以和数据库进行类比,数据库是建立在存储之上的,索引也是构建在存储之上,只是和数据做了一个映射,使得按照某些条件查询速度会非常快,所以说 Indexer 本身也是一个存储,
原创
2021-01-07 16:15:25
800阅读
在part 4中,我们在DeltaFIFO结构中单独查看了一些细节,它将逻辑“将此对象添加到请求”请求转换为“添加表示对象添加的事件”操作。 这结束了我们对tools/cache包的结构演练。 从行为的角度来看,显然还有很多东西要看,但是现在值得停下来展示全局。 在下图中,您将看到一个毫无歉意的粗糙和简单混合的,UML,一些Java概念,一些Go类型名称 - 简而言之,一个大杂烩的符号应该证明有