Kubernetes — client-go组件

client-go组件

在这里插入图片描述

Reflector

Reflector 监控Kubernetes API中指定的资源类型。完成此操作的函数是ListAndWatch。既可以监控内置资源,也可以监控自定义资源。当Reflector通过监控API接收到存在新资源实例的通知时,它使用相应的API获取新创建的对象,并将其放入watchHandler函数内的Delta Fifo队列中。

DeltaFIFO

DeltaFIFO可以分开理解,FIFO是一个先进先出的队列,它拥有队列操作的基本方法,例如Add、Update、Delete、List、Pop、Close等,而Delta是一个资源对象存储,它可以保存资源对象的操作类型,例如Added(添加)操作类型、Updated(更新)操作类型、Deleted(删除)操作类型、Sync(同步)操作类型等

Informer

controller机制的基础,循环处理object对象,从Reflector取出数据,然后将数据给到Indexer去缓存,提供对象事件的handler接口

Indexer

client-go用来存储资源对象并自带索引功能的本地存储,Refelctor从DeltaFIFO消费出来的资源对象存储至indexer。indexer与etcd集群保持一致。client-go可以很方便的从本地存储中读取响应的资源对象数据,而无需每次从etcd读取,以减轻kubernetes apiserver对etcd的压力。

自定义控制器组件

Informer reference

对Informer实例的引用,该实例知道如何使用自定义资源对象。controller需要创建合适的Informer才能通过Informer reference操作资源对象

Indexer reference

对Indexer实例的引用,该实例知道如何使用您的自定义资源对象。controller创建Indexer reference然后去利用索引做相关处理

Resource Event Handlers

当Informer想要传递一个对象给你的控制器时,它会调用这些回调函数。编写这些函数的典型模式是获取被分派对象的键,并将该键放入工作队列中进一步处理。

Work queue

Resource Event Handlers被回调后将key写到工作队列,这里的key相当于事件通知,后面根据取出事件后,做后续的处理

Process Item

用于处理工作队列中的项目。可以有一个或多个其他函数执行实际处理。这些函数通常使用Indexer引用或Listing包装器来检索与键对应的对象。

猜你喜欢

转载自blog.csdn.net/weixin_45804031/article/details/125792304