Starting Controller

Controller 启动过程是类似的,首先创建到 API Server 的客户端连接 clientset.Interface,它包含了访问 API Server 不同类型资源的客户端。

然后,启动 SharedInformer 接口实例,伴随其启动的,还有一个 Controller 实例。Controller 定期从 API Server 获取资源变更,并存入 Store 实例中。Controller 的 processLoop 协程,从 Store 中顺序读取资源变更事件,并交由 sharedIndexInformer 实例处理,最终到达 ResourceEventHandler。

Controller 实现的核心,在于其对监听资源的变更处理方法上。
controller-mode.svg
简化后的工作流如下图
controller-workflow.svg

Controller Manager

Controller Manager 负责启动 Controllers。通过注册不同类型 Controller 的初始化方法,并创建 ControllerContext,隔离了 Controller 具体实现。

Controller Manager —-Create—> ControllerContext —-Pass—> Initialization Function

controller-controller-manager.svg
1.18 版本,注册的 Controller
image.png