Kolla:Docker+OpenStack

yizk6542 9年前

来自: 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