k8s informer resync机制

informerFactory创建informer

informer一般由informerFactory创建(支持直接创建informer,一般不这么做),informerFactory支持创建多种资源类型的informer,同一个informerFactory中同一种资源类型只创建一个informer。

DeltaFIFO

queue里面保存了KeyOf函数计算得到的存储资源对象的key。
items通过map存储,同一个资源对象的操作放在同一个切片中。

resync机制

Indexer本地存储中的资源对象同步到DeltaFIFO中,操作类型是Sync,触发 onUpdate回调。
在处理SharedInformer事件时,可能存在处理失败的情况,定时的resync让处理失败的事件有了重新处理的机会。如果DeltaFIFO 队列中该资源对象有了event,那么不入队。
add事件回调失败 -> indexer有记录 -> onUpdate
update事件回调失败 -> indexer有记录 -> onUpdate
delete事件回调失败 -> indexer没有记录 -> 不走resync
但是,业务上处理失败,通常会放入队列重试,不需要走resync流程。
例如,kube-ovn把resync定时周期设为0,表示不使用resync。

posted on 2024-04-04 16:31  王景迁  阅读(4)  评论(0编辑  收藏  举报

导航