1. 概述
ks-controller-manager 主要作為管理控制器,通過監(jiān)聽etcd中資源的變化治力,同步配置對應(yīng)資源的狀態(tài),以達到最終狀態(tài)的一致性淹禾。功能與controller-manager的功能類似歧焦,不過主要為維護kubesphere新增的資源屹篓。
2. 結(jié)構(gòu)分析
ks-controller-manager 整體結(jié)構(gòu)如下注盈。
2.1 InformerFactory
InformerFactory 是watch etcd中指定資源并獲取同步信息的一個適配器:
- 同步watch的資源變化并觸發(fā)用戶注冊的處理回調(diào)
- 提供更新etcd中資源的接口苫亦。
ks-controller-manager 即是通過各個InformerFactory完成資源信息的同步条舔,這里有多個SharedInformerFactory枫耳,如kubernetes, kubesphere, istio等,主要負責(zé)對應(yīng)相關(guān)資源類的信息同步孟抗。
雖然有多個InformerFactory句柄迁杨,但kubesphere,istio等都是從kubernetes句柄衍生出來的凄硼,因此各個SharedInformerFactory最終都是通過kubernetes操作etcd資源铅协。
2.2 controller
controller 是在InformerFactory同步到資源變化后,根據(jù)資源變化具體操作對應(yīng)資源的控制邏輯摊沉。
譬如狐史,當(dāng)istio InformerFactory 獲取到網(wǎng)絡(luò)治理相關(guān)配置發(fā)生變化時, virtualservice就會操作istio 創(chuàng)建或更新網(wǎng)絡(luò)策略。
controller 中有 application, cluster, globalrole, helm等骏全,分別提供對應(yīng)資源同步時的具體操作苍柏。
3. 流程說明
- informfactory 監(jiān)聽etcd中資源。
- 資源發(fā)生變化時姜贡,觸發(fā)controller回調(diào)试吁。
- controller操作對應(yīng)資源resource。
-
確認操作成功后楼咳,controller通過informfactory 將狀態(tài)信息等更新入etcd熄捍。
流程圖.png