Magnum项目提供了Openstack API帮助管理员能够在Openstack中创建基于容器的服务。当前,Magnums使用 
的容器后端是k8s和docker。为了更好的管理容器,Magnum在定义了以下对象:Bay,BayModel,Node,Pod,Service, 
ReplicationController,Container。 
分别介绍下以上几个对象:

  • Bay:运行容器的一组node的集合,是Magnum中容器调度的基本单元;
  • BayModle:用来存储Bay的模板的对象,类似于Nova中的flavor;
  • Node:容器运行的节点,可以上裸机、虚拟、容器 ;
  • Pods:运行在同一个Node上一组容器集合;
  • Service:一组Pods在逻辑上的抽象以及如何访问这组pods的策略;
  • ReplicationController:用来管理Pods组的抽象,用来确保使用有固定数目的Pods在运行;
  • Container:A docker container。(将来有可能是Rokcet容器,当前K8S正在集成Rokcet). TODO:Magnum的基本使用流程

那么Magnum与K8S及当前Opensatck中的nova-docker和heat-docker又是啥关系呢?

  1. Magnum于nova有什么不同? 
    Magnum提供API来部署应用容器,与nova-docker部署的容器处于不同的生命周期。事实上,Magnum在nova发放的实例中部署应用容器.我们可以在任何nova发送的实例中再使用magnum发放应用,eg:vms、baremental node、docker container。

  2. Magnum于Dokcer和K8S有什么不同? 
    与Docker&k8s相比,Magnum提供了一组和Keystone一起工作异步的api,具备多租户的能力。同时,Magnum不负责编排的工作,编排工作是有heat完成的。在Mangum中,K8S和docker都是Magnum的组件。Magnum使用它们作为容器后端来管理容器。看起来, 有点像nova使用libvirt启动虚拟机。

  3. 是否与Nova-docker做的事情是相同的? 
    Nova-Docker是nova的一个driver,使得用户可以将容器作为一种轻量的虚拟机来使用。但是,Magum是用来部署用户的服务容器的。Magnum提供了一套独立的ReST API。Magnum并不会直接调用nova的API创建Bay。Magnum使用的是heat的API来创建Bay。

  4. 谁需要使用Magnum? 
    Magnum为OpenStack云提供营提供了一种为云用户提供容器来托管服务的自助解决方案。Mangum简化了与OpenStack集成的要求且允许云用户在在已经投入Nova实例,Cinder 卷服务,Trove数据库服务等基础上创建应用容器。提供了超过现有云资源之外的能力。用户用来创建IAAS资源的token,也可以用来创建应用,且能够自动重新创建一个实例。Magnum支持指定应用实例个数的方式进行应用伸缩,能够在应用实例失败的情况下自动重新启动应用实例,与虚拟机比起来能够将应用跟更紧的打包一起。

  5. Heat Docker 是否能完成Magnum做的事情? 
    Heat Docker没有提供资源调度的能力及选择所使用容器技术的能力。Heat docker并不支持与swarm和k8s的集成。

  6. 多租户在Magnum中意味着什么? 由Mangnum创建出来的容器,服务,Pods,Bays这些资源只对创建他的租户下的用户可见。Bays在不同租户间不是共享的,不同租户的容器不会运行在相同的bay里,这意味这不同租户的容器不会运行在同一个内核上。将同一个租户的容器运行在相同的pods和bays里面,将不通租户的容器运行在不同的内核上是Magnum的关键安全特性。在租户的隔离性上,使用Mangum创建的容器具有与使用nova创建虚拟机相同的隔离性。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐