Kolla:Docker+OpenStack

yizk6542 8年前發布 | 21K 次閱讀 Docker OpenStack

來自: http://1.chaoxu.sinaapp.com/archives/3665

一.Kolla項目簡介

kolla項目是TripleO項目的一部分,聚焦于使用docker容器部署openstack服務。 項目于2014年9月開始,是openstack的孵化項目。

當前Kolla項目在Kollaglue repo提供了以下服務的docker鏡像。

$ sudo docker search kollaglue

代碼目錄結構

docker 
創建docker image
k8s 
創建kubenetes的pods和service配置文件
tools 
與Kolla交互的各種工具
devenv 
管理Kolla開發環境的一些工具。

當前的問題

當前升級和降級openstack主要有兩種方式,基于image與基于package。 

基于image的方式,更新是原子的。 

基于package的更新方式通常不是原子的,升級過程中存在很多導致失敗的原因,可能存在部分package更新失敗的可能。

使用場景

原子性的升級或者回退openstack部署。

基于組件升級openstack。

基于組件回退openstack。

安全與其他

某些容器可能需要privileged,某些可能需要host相同的namespace。 

安全加強可以使用Selinux或者AppArmor。

Kolla的主要功能是使用Docker容器快速部署升級OpenStack服務。

二.Kolla理解

Kolla的最終目標是為OpenStack的每一個服務都創建一個對應的Docker Image,通過Docker Image將升級的粒度減小到Service級別,從而使升級時,對OpenStack影響能達到最小,并且一旦升級失敗,也很容易回滾。升級只需要三步:Pull新版本的容器鏡像,停止老版本的容器服務,然后啟動新版本容器。回滾也不需要重新安裝包了,直接啟動老版本容器服務就行,非常方便。

Kolla是通過Docker Compose來部署OpenStack集群的,現在主要是針對裸機部署的,所以在部署Docker Container時,默認的網絡配置都是Host模式。所以Kolla的好處就非常明顯了,將OpenStack升級的粒度細化到了Service級別,升級失敗時,可以很容易回滾。

可以看到首先需要啟動一個管理節點,只需要通過一個命令就可以把管理節點部署完成,這個命令是調用Docker Compose來部署OpenStack的所有服務,然后我們可以在每一個計算節點上通過Docker Compose安裝計算節點需要的服務,就能部署一個OpenStack集群。因為Kolla的Docker Image粒度很小,它針對每個OpenStack服務都有特定的Image,所以我們也可以通過Docker Run來操作某個具體的OpenStack服務。這個例子是通過Docker Image啟動了Glance API。

圖1是一個OpenStack compute的一個例子。

圖2 OpenStack compute的一個例子

這是一個簡單的YML文件,我們可以通過Docker compose使用這些YML文件部署OpenStack節點,可以看到這個YML文件包含Compute Data Image、Libvirt Image、Network Image、Nova API Image和Compute Image等。第一個Compute Data主要是為其他Container提供存儲服務的,可以看到Libvirt和Novacompute的Container的存儲都是從Compute Data來的,因為它們都有一個字段voluemes_from指向Compute Data這個Container。

如何選擇?

OpenStack和Docker相關的項目這么多,該怎么去選擇呢?簡單說明如下。

如果用戶只是想將以前的VM Workload遷移到Docker Container,那么它可以使用Nova Docker Driver,一個很典型的例子是Sahara通過Heat調用Nova Docker Driver來創建Hadoop集群。

如果用戶想使用Docker的一些高級功能來部署一個小規模集群,那就可以考慮Heat Docker Driver。

如果用戶想通過OpenStack集成現有的一些Docker集群管理工具像K8S、Swarm來管理大規模的Docker集群,建議使用Magnum。另外因為Magnum也是基于Heat做的,所以默認也支持混合云的功能。

Murano和Docker的集成,主要體現在它提供了一個K8S的應用,用戶可以通過這個K8S應用來管理Docker集群。但Murano和Docker的焦點不一樣,Magnum主要提供容器服務,Murano主要提供應用目錄服務。

最后的Kolla,主要是簡化OpenStack的安裝部署和升級的。

本節轉載自:

http://www.csdn.net/article/2015-05-20/2824734

http://blog.csdn.net/halcyonbaby/article/details/44035653

 本文由用戶 yizk6542 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!