天天看點

智彙華雲 | 建構華雲虛拟化平台服務容器鏡像解析

作者:華雲資料

一,背景

以openstack為代表的IaaS開源技術和以Docker為代表的PaaS/CaaS容器技術日益成熟,二者如何強強聯合,一直是業界頗為關心的焦點領域。Openstack是個大和全的IAAS開源體系架構,涉及的技術領域群組件非常多;對openstack的可用性和管理維護上是最讓人頭疼的的兩個難題;我們的華雲虛拟化平台是基于openstack演進而來,必不可少的會帶有這兩個問題,而通過docker容器化華雲虛拟化平台的管理方案解決以上兩個問題。經過調研和對比,華雲虛拟化平台服務容器化選用kolla進行自動化建構。相比于其他部署工具,Kolla完全革新地使用了Docker容器技術,将每一個華雲虛拟化平台服務運作在不同的Docker容器中。

二,原理

Kolla是基于使用 Dockerfile + jinja2 實作的建構鏡像。大緻原理是Kolla 中嵌入了docker和jinja2,使用 Jinja2 模闆生成 Dockerfile 檔案,然後把Dockerfile檔案投喂給docker進行容器鏡像的建構,建構完成,還可以根據配置将鏡像推送的指定的 Registry 伺服器。

智彙華雲 | 建構華雲虛拟化平台服務容器鏡像解析

(容器鏡像建構)

Jinja2模闆示例:

智彙華雲 | 建構華雲虛拟化平台服務容器鏡像解析

Kolla在建構鏡像過程中可以通過讀取配置填充到jinja2的模闆中,生成不同的架構的鏡像例如X86 或ARM。

三,詳細建構流程:

智彙華雲 | 建構華雲虛拟化平台服務容器鏡像解析

1,根據需要修改kolla-build的配置,建構時會讀入該配置

2,生成dokcerfile時會把 docker 整個目錄複制到一個臨時的工作目錄,然後在其中掃描包含有 Dockerfile.j2 檔案的檔案夾,一個檔案夾就對應一個鏡像。

3,建構鏡像清單是将上一步生成的 Dockerfile 都讀取到記憶體,處理裡面的 FROM 語句,可以獲得每個鏡像的 parent 名字。還有其它一些關于安裝方式的細節也要處理,不用過多關心。這一步完成我們就得到了一個鏡像清單

4,查找和建立鏡像關系是周遊整個鏡像清單,把它們的依賴關系整理清楚,因為華雲虛拟化平台服務元件很多,各個元件之間存在依賴關系,需要把他們理清楚

5,過濾出目标鏡像清單:因為總共鏡像數量比較多,是以需要根據使用者提供的參數做一下過濾,過濾的參數可以通過配置檔案指定

6,建構:真正進行容器鏡像的建構工作,此時是根據目标鏡像清單中的資料進行建構的

7,建構完後,會回報哪些鏡像建構成功,哪些建構失敗

繼續閱讀