controller-runtime解析

发布时间 2023-05-25 00:12:35作者: 南昌拌粉的成长

一、controller-runtime流程图

 - Manager 用户初始化的时候需要创建的,用来启动controller runtime的组件
 - Reconciler 自定义业务逻辑
 - Cache 缓存,用于建立informer对apiserver进行连接watch资源,并将watch到的object放入queue
 - Controller 一方面会像informer注册eventhandler,另一方面会从queue中拿数据并执行Reconcile函数

二、controller-runtime工作流程

 - 首先,controller会向Informer注册特定资源的eventHandler
 - 然后,Cache会启动Informer,Informer向ApiServer发出请求,建立连接
 - 当Informer检测到有资源变动后,使用Controller注册进来的eventHandler判断是否推入queue中
 - 当队列中有元素被推入时,Controller将元素取出,并执行用户侧的Reconciler

三、controller-runtime一般用法:

1、初始化Manager,同时生成一个默认配置的Cache
2、初始化Controller
  - ctrl.NewControllerManagedBy 创建Controller,同时将第一步生成的Manager的一些配置注入到Controller中
  - For 用来指定watch的资源类型
  - Owns 某资源是我关心的资源的从属,那么其event也会进入到Controller的Queue中
  - Complate 用于生成Controller,将用户的Reconciler注册进Controller,并生成watch资源的默认eventHandler,同时执行Controller的watch函数
  - 最后一步就是启动Manager,进一步启动Cache,即启动Informer,Controller