栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

k8s之informer简单理解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

k8s之informer简单理解

informer简介
Informer是一个能够缓存apiserver的对象到本地、具有索引机制、并可以注册 EventHandler 的 client。使用 informer 的目的是为了减轻 apiserver 数据交互的压力,其中本地缓存被称为 Store,索引被称为 Index。

Informer流程:informer的listandwatch机制,默认是每10h从apiserver中整体list一次,有add、delete等事件时会通过watch机制把这个事件+对象放到deltaFIFO中,然后根据deltaFIFO中的内容会先到localstore中更新,之后也会触发controller。并且LocalStore会每隔30s把所有的对象重新放到DeltaFIFO中,从而触发controller。

Informer的详细工作流程
(1)Informer 首先会 list/watch apiserver,Reflector 包使用 ListAndWatch 的方法从 apiserver 中 list短连接 该资源的所有实例,list 会拿到该对象最新的 resourceVersion,然后使用 watch长连接监听该 resourceVersion 之后的所有变化,一旦该对象的实例有创建、删除、更新动作,Reflector 都会收到"事件通知",这时该事件及它对应的API 对象这个组合被称为增量(Delta),它会被放进 DeltaFIFO 中。
(2)Informer 会不断地从这个 DeltaFIFO 中读取增量,每拿出一个对象,Informer 就会判断这个增量的类型并创建或更新本地的缓存store。
如果事件类型是 Added(添加对象),那么 Informer 会通过 Indexer库把这个增量里的 API 对象保存到本地的缓存中,并为它创建索引,若为删除操作,则在本地缓存中删除该对象。
(3)DeltaFIFO 再 pop 这个事件到 controller 中,controller 会根据事先注册的 ResourceEventHandler 回调函数进行处理。在回调函数中其实只是做了一些简单的过滤,然后将关心变更的Object放到workqueue里。
(4)Controller从workqueue里面取出Object,启动一个worker来执行自己的业务逻辑,业务逻辑通常是计算目前集群的状态和用户期望的状态。在worker中也可以使用lister来获取resource,而不用频繁的访问apiserver,因为 apiserver中resource的变更都会反映到本地的cache中。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/709413.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号