背景

当前容器技术日益流行,OpenStack社区明确提出拥抱容器技术,并且在2017年2月打破之前半年一版本的节奏,提前两个月发布Ocata版本,充分验证了这一点,在这个版本上,看到了和容器技术有关的组件正在快速成熟,OpenStack的COO Mark Collier表示,OpenStack与Kubernetes的结合正是云未来的指路灯。

近段时间NewtouchX团队开始支撑私有云场景下的项目,如何快速升级OpenStack各个组件,简化开发、测试和部署的需求越来越强烈,正好整理了当前OpenStack社区中与容器技术有关的组件(之前的nova-docker组件已经并入zun,就不再列出),总结一下OpenStack社区与容器技术融合的情况,而且不难看出,OpenStack社区与mesos相关组件有些已经停止更新,而与kubernetes相关的新项目和组件发展迅速。以下信息如有错漏,欢迎大家予以指正。

OpenStack涉及容器技术的组件

本文的讨论的内容,是截止到2017年6月12日

Kolla项目目前NewtouchX团队已经尝试用于OpenStack的开发与测试环境,相关安装配置可参见我的另外一篇博文

Kolla

属于部署工具,使用Docker技术提供可用于生产环境的OpenStack各服务的容器镜像,使用ansible或者kubernetes部署并运行这些容器镜像。

绿色部分是Kolla涉及的

相关子项目

kolla(4.0.1)

kolla-ansible(4.0.1)

kolla-kubernetes(尚未release)

Helm

属于部署工具,这个项目非常新,目前尚未release,主要是基于Kubernetes的helm包管理工具,将OpenStack的各组件全部制作成charts,通过kubernetes部署运行。

Solum

目前版本为 5.0.1

属于应用服务,使用docker技术,使云服务能更简单的应用和集成到用户的开发过程中。通过一个push按钮就可以提交代码并且部署到一个OpenStack云上。其本身就是专为OpenStack设计的,利用现有的OpenStack服务。

Murano

当前版本 3.2.0

属于应用服务,提供OpenStack中的应用目录服务,提供各种应用和服务的发布和生命周期管理,并提供UI和API;把任何事情都定义为应用,采用YAQL语言模板定义应用。



集成到Horizon的界面

Magnum

当前版本 4.1.2

属于虚拟化计算,集成容器编排引擎(Swarm kubernetes mesos DC/OS),最大限度地利用OpenStack中的各种服务提供在OpenStack上的容器编排引擎管理服务:虚拟机里跑容器,物理机里跑容器。

绿色部分是Magnum涉及的

Kuryr

属于支持容器的插件,一个让Docker能够使用Neutron服务的插件,目标是支持各种容器编排引擎eg:Kubernetes, Mesos, Docker Swarm 与 Neutron, Magnum, Kolla 协作工作,现在可以支持Docker Swarm。

相关子项目

Fuxi

Fuxi负责把Cinder(块存储)和Manila(文件存储)与容器环境相连:

与Docker集成



与kubernetes集成

Zun

提供OpenStack原生的API用来管理容器,计划支持多种容器技术Container runtimes: Docker, Rkt, Clear Conainer, etc.;COEs: Kubernetes, Docker Swarm, etc.

OpenStack与容器技术的集成方案

如果上面的列表过于具体和抽象,下面的图示能够非常清楚的说明这些组件想要干什么事情:

OpenStack deployed on docker

使用 kolla-ansible将OpenStack部署到安装有docker的物理机,或者虚拟机中。

OpenStack deployed on Kubernetes

使用 kolla-kubernertes或者 openstack-helm将OpenStack部署到kubernetes集群环境中。

COEs work on OpenStack

利用OpenStack的各基础服务,并且整合API,提供支撑容器运行所需的网络、存储、部署、管理等功能。

总结

  • OpenStack deployed on docker 方式,可在OpenStack开发人员本地的虚拟机中,直接搭建和部署all-in-one的openstack,非常方便,配合CI/CD工具,提高开发效率。
  • OpenStack deployed on Kubernetes 方式,在物理机环境下直接部署kubernetes集群,openstack直接部署在kubernetes集群之上,充分利用容器技术的优点,解决之前openstack非常难于升级和维护,但所能支撑大规模的openstack节点(200个物理节点)还有待验证。
  • COEs work on OpenStack 方式下,这里所用到的各组件大都没有release,不成熟,但与之前的方案(nova-docker,heat-docker)相比,对于容器的支撑更为完整,感兴趣的可以多关注这些组件的后续发展。