一、controller-runtime
controller-runtime由kubebuilder和operator-SDK共同完成;
1、WithEventFilter和EventHandler
- 使⽤WithEventFilter配置变更过滤器,是针对reconciler watch的所有资源,统⼀地设置事件监听规则;
- 使⽤EventHandler,能够在reconciler watch特定资源时,对该资源设置单独的事件监听规则。
2、控制器的执行链条
Run ==> go worker ==> for processNextWorkItem ==> syncHandler。Run 方法作为 Controller 逻辑的统一入口,启动指定数量个协程,协程的逻辑为:wait.Until(dc.worker, time.Second, stopCh) ,control loop 具体为Controller 的worker 方法,for 循环具体为 for processNextWorkItem(){}
3、ControllerManager的NewCache与NewClient
ControllerManager 正如其名,它会负责管理一个或多个控制器,其中一项重要工作就是初始化一个 K8s Client,在创建 CtrMgr 的方法参数中,ctrl.Options 包含了 2 个重要配置项:新建 Cache 与 新建 Client。
NewCache 接口定义了 2 个功能,一是维护一组 Informer,每个 Informer 持续监听(ListAndWatch)某一类(GVK) K8s 对象的资源事件,并按照特定的索引计算方式,将对象数据存储在本地缓存中;二是提供 Get/List 方法以读取 Informers 缓存的 K8

最低0.47元/天 解锁文章
1572

被折叠的 条评论
为什么被折叠?



