Magnum项目提供了Openstack API帮助管理员能够在Openstack中创建基于容器的服务。当前,Magnums使用
的容器后端是k8s和docker。为了更好的管理容器,Magnum在定义了以下对象:Bay,BayModel,Node,Pod,Service,
ReplicationController,Container。
分别介绍下以上几个对象:
那么Magnum与K8S及当前Opensatck中的nova-docker和heat-docker又是啥关系呢?
Magnum于nova有什么不同?
Magnum提供API来部署应用容器,与nova-docker部署的容器处于不同的生命周期。事实上,Magnum在nova发放的实例中部署应用容器.我们可以在任何nova发送的实例中再使用magnum发放应用,eg:vms、baremental node、docker container。
Magnum于Dokcer和K8S有什么不同?
与Docker&k8s相比,Magnum提供了一组和Keystone一起工作异步的api,具备多租户的能力。同时,Magnum不负责编排的工作,编排工作是有heat完成的。在Mangum中,K8S和docker都是Magnum的组件。Magnum使用它们作为容器后端来管理容器。看起来, 有点像nova使用libvirt启动虚拟机。
是否与Nova-docker做的事情是相同的?
Nova-Docker是nova的一个driver,使得用户可以将容器作为一种轻量的虚拟机来使用。但是,Magum是用来部署用户的服务容器的。Magnum提供了一套独立的ReST API。Magnum并不会直接调用nova的API创建Bay。Magnum使用的是heat的API来创建Bay。
谁需要使用Magnum?
Magnum为OpenStack云提供营提供了一种为云用户提供容器来托管服务的自助解决方案。Mangum简化了与OpenStack集成的要求且允许云用户在在已经投入Nova实例,Cinder 卷服务,Trove数据库服务等基础上创建应用容器。提供了超过现有云资源之外的能力。用户用来创建IAAS资源的token,也可以用来创建应用,且能够自动重新创建一个实例。Magnum支持指定应用实例个数的方式进行应用伸缩,能够在应用实例失败的情况下自动重新启动应用实例,与虚拟机比起来能够将应用跟更紧的打包一起。
Heat Docker 是否能完成Magnum做的事情?
Heat Docker没有提供资源调度的能力及选择所使用容器技术的能力。Heat docker并不支持与swarm和k8s的集成。
多租户在Magnum中意味着什么? 由Mangnum创建出来的容器,服务,Pods,Bays这些资源只对创建他的租户下的用户可见。Bays在不同租户间不是共享的,不同租户的容器不会运行在相同的bay里,这意味这不同租户的容器不会运行在同一个内核上。将同一个租户的容器运行在相同的pods和bays里面,将不通租户的容器运行在不同的内核上是Magnum的关键安全特性。在租户的隔离性上,使用Mangum创建的容器具有与使用nova创建虚拟机相同的隔离性。