Kubernetes informer controller 原理笔记

整理了一张思维导图,比较乱:

Informer-controller.png

我主要关注的是数据流(从 K8s client 获取数据到分发到自定义的 handler):

这里一共有两个队列:

  1. 从 K8s 中获取到的数据,缓存在 Queue 中,内容不区分类型的
  2. listener 中的 RingGrowing=,订阅前一个 Queue 中的数据,内容被封装成了各种 =Notification

理解了两个队列之后,就好理解 WaitForCacheSync 函数,他阻塞到 Cache 同步完成,那么完成的标准是什么呢?

ListAndWatcher 中 List 成功之后,会替换掉 Queue 中的所有数据,首次的所有数据全部分发给 listener 中的 RingGrowing 队列,分发完成则认为是同步完成。


扩展:

Date: 2019-06-27 22:07:00

Author: JerryZhang