Kolla: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