12.5.1 概述
对于容器的管理,OpenStack社区开始是采用Nova driver的方式,对Nova计算控制器进行扩展,在Linux环境下同时管理虚拟机和容器。但是最终技术人员意识到,容器和虚拟机差异很大,它们底层技术不同,生命周期管理方式不同,容器需要有与虚拟机不同的独立的管理方式。容器管理不是简单地将Hypervisor替换为Docker就可以的。在大规模云环境下,需要有不同于虚拟化的管理工具对容器有效管理。
2014年,OpenStack创建了Magnum项目。
Magnum项目由OpenStack联合创始公司Rackspace Hosting主导,项目PTL Andrio otto是Rackspace的资深架构师。IBM、NEC也对Magnum项目很重视,IBM目前的代码贡献率为第一,如图12-13所示。
图12-13 Magnum项目社区的贡献情况
与其说Magnum提供容器管理,不如说Magnum提供了OpenStack与大规模容器管理系统进行交互的接口,这里所指的容器管理系统包括Docker Swarm和Google Kubernets。其中Kubernets不仅可管理Docker容器,现在还正在扩展以支持CoreOS发布的AppC容器。尽管这些容器管理系统足以对容器进行管理,但是它们需要一个OpenStack这样的云控制器,对管理系统进行封装。
1)很多公司构建云平台,希望通过支持多个Swarm和Kubernetes实例,对客户提供一定的隔离性。所以需要一个云控制器对Swarm和Kubernetes集合进行资源分配和管理。
2)Magunm作为一个接口,屏蔽不同容器管理工具的操作差异。OpenStack对于用户选择何种虚拟化、何种网络没有倾向性。同样,OpenStack对于用户选择的各种容器技术也都提供很好的支持。当用户希望增加新的容器管理系统,以支持LXC、OpenVZ、rkt或者其他容器格式时,Magnum的可插拔架构使得这些成为可能。
3)Magnum不仅支持Linux,目前微软有两种容器技术:Windows服务器容器和Hyper-V容器。Magnum最终会对Docker和Microsoft的容器管理工具进行封装,管理各种类型容器的混合形态。
当前Rackspace内部正在试运行一个基于Libvirt-LXC容器技术的服务。顾名思义,Magnum驱动可以管理和控制LXC容器,这项产品2015年年底在Rackspace Cloud上已经对外发布。
Magnum在2014年11月才接纳了第一个commit,直到2015年3月底才发布第一个版本,所以Magnum在OpenStack社区中还是个很年轻的项目。Magnum的复杂度和OpenStack初期的Nova Controller相当,但是随着OpenStack的发展,OpenStack开发者积累了很多的经验,所以,Magnum PTL Andrio Otto认为,项目可能在Liberty版本就达到生产级别。