Kubesphere 源码分析3 ks-controller-manager

1. 概述

ks-controller-manager 主要作为管理控制器,通过监听etcd中资源的变化,同步配置对应资源的状态,以达到最终状态的一致性。功能与controller-manager的功能类似,不过主要为维护kubesphere新增的资源。

2. 结构分析

ks-controller-manager 整体结构如下。

2.1 InformerFactory

InformerFactory 是watch etcd中指定资源并获取同步信息的一个适配器:

  • 同步watch的资源变化并触发用户注册的处理回调
  • 提供更新etcd中资源的接口。
controllermanager.jpg

ks-controller-manager 即是通过各个InformerFactory完成资源信息的同步,这里有多个SharedInformerFactory,如kubernetes, kubesphere, istio等,主要负责对应相关资源类的信息同步。

虽然有多个InformerFactory句柄,但kubesphere,istio等都是从kubernetes句柄衍生出来的,因此各个SharedInformerFactory最终都是通过kubernetes操作etcd资源。

2.2 controller

controller 是在InformerFactory同步到资源变化后,根据资源变化具体操作对应资源的控制逻辑。
譬如,当istio InformerFactory 获取到网络治理相关配置发生变化时, virtualservice就会操作istio 创建或更新网络策略。
controller 中有 application, cluster, globalrole, helm等,分别提供对应资源同步时的具体操作。

3. 流程说明

  • informfactory 监听etcd中资源。
  • 资源发生变化时,触发controller回调。
  • controller操作对应资源resource。
  • 确认操作成功后,controller通过informfactory 将状态信息等更新入etcd。


    流程图.png

你可能感兴趣的:(Kubesphere 源码分析3 ks-controller-manager)