1. 概述
ks-install 基于ansible完成了kubesphere組件的動態(tài)插拔。
2. 結構分析
ks-install嵌入在shell-operator組件中
- shell-operator通過監(jiān)聽etcd中配置資源的變化,當配置crd更新時(譬如設置 alert:true)。將會把etcd中組件配置信息整體以json的形式傳入installRunner腳本。
- installRunner腳本將最新的配置信息傳入playbooks集合。playbooks集合中包含了更新各個組件的入口。其中各個playbooks將根據新的配置信息嘗試調用具體的"更新"腳本roles。
- "更新"過程是腳本發(fā)現配置信息中對應組件啟動時將安裝該組件需要的依賴,當發(fā)現對應組件關閉時將嘗試卸載對應組件需要的依賴。
- "更新“”過程中除了更新配置的依賴外,也會動態(tài)生成kubesphere等負載的配置文件,并重啟kuberpshere系統的核心模塊。

ks-install結構圖
3. 流程分析
整體業(yè)務流程如下所示
- shell-operator監(jiān)聽etcd中組件配置相關etcd數據變化。
- 當配置變化時調用ks-installer嘗試安裝依賴和更新kubespherer核心組件配置。
- ks-installer 首先檢查各個開啟的組件依賴服務是否安裝,當發(fā)現未安裝時進行依賴安裝。例如,當發(fā)現日志功能開啟時將嘗試安裝es系統。
- 然后ks-installer生成各個kubesphere核心組件配置并重啟組件。
例如,當集群由none模式切換為host模式時,將生成新的組件配置,并重啟ks-apiserver,從而使ks-apiserver模塊感知到集群模式的變化。

ks-install流程圖.png