什么是Zun? OpenStack容器管理,了解一下

OpenStack是业界主流的开源云管理平台,旨在提供实施简单、可大规模扩展、丰富、标准统一的云平台。全球数百家大品牌企业依靠OpenStack每天运营业务,从而降低成本,并更快地行动。Zun即Open...

OpenStack是业界主流的开源云管理平台,旨在提供实施简单、可大规模扩展、丰富、标准统一的云平台。全球数百家大品牌企业依靠OpenStack每天运营业务,从而降低成本,并更快地行动。Zun即OpenStack中提供容器管理服务的组件,于2016年6月建立。

什么是Zun

作为提供容器管理服务的组件,Zun允许用户无需管理服务器或集群即可快速启动和运行管理容器,通过与Neutron、Cinder、Keystone以及其它核心OpenStack服务相集成以实现容器的快速普及。通过这种方式,OpenStack的原有网络、存储以及身份验证工具将全部适用于容器体系,从而确保容器能够满足安全与合规性要求。

Zun计划支持多种容器技术,如Docker、Rkt、clear container等,目前已经完成对Docker容器技术的支持。

为什么选择Zun

目前,在OpenStack中,支持容器技术主要有如下几个主流方案:Nova Docker driver、Magnum等。

  • Nova Docker driver方案

该方案将容器当成虚拟机一样进行操作,通过增加 Nova Docker driver,实现对Docker容器实施启停、创建等类似常规虚拟机的操作。该方案的缺点在于,由于Docker和虚拟机终究是存在一部分差异的,通过类虚拟机方式来操作容器,会导致容器的许多功能无法实现,例如容器关联、端口映射等功能。

  • Magnum方案

Magnum是OpenStack中提供容器集群部署功能的服务,Magnum通过Heat来部署虚拟机和物理机,从而组成集群,然后调用COE接口完成容器的部署。在Magnum项目创建之初,项目目标以CaaS为宗旨,即“容器即服务”;在后续的发展中,Magnum功能大多集中在容器的集群部署上。

  • Zun方案

Zun将容器作为一种OpenStack资源来进行管理,并通过集成OpenStack的其他服务,为用户呈现统一的、简化的API接口,用户可以通过这些接口来创建、管理容器,而不需要关心不同容器技术之间的差异。

Zun集成了多个OpenStack服务,其中Keystone、Neutron、Kuryr-libnetwork是运行Zun所必须的服务,它们分别为Zun提供认证、网络、neutron网络与docker网络之间的连接。对于OpenStack用户而言,他们会发现学习使用Zun容器是一件相当容易的事。

集成OpenStack服务的优点在于,可以借助于OpenStack已存在的功能来扩展容器功能,例如,默认情况下,Zun容器可以使用Neutron分配的IP地址,可以使用由Keystone提供的认证服务。将Zun与Neutron一起使用,可以在Nova实例所在的隔离网络环境中创建容器。VM的Neutron功能(即安全组,QoS)也可用于Zun容器。在实际业务中,经常存在需要长久保存数据的场景。通常常用的方法是利用外部服务为容器提供持久卷。Zun通过与OpenStack Cinder集成解决了这个问题。 创建容器时,用户可以选择将Cinder卷挂载给容器。 Cinder卷可以是租户中的现有卷或新创建的卷。每个卷将被绑定到容器文件系统路径中,并且存储在该路径下的数据将被持久化。

在Orchestration方面,与其他提供内置编排的容器平台不同,Zun使用外部编排系统来实现此目的,例如Heat与Kubernetes。通过使用外部协调工具,最终用户可以使用该工具提供的DSL定义他们的容器化应用程序。

借助Heat,用户还可以定义由容器资源和OpenStack资源组成的资源,例如Neutron负载平衡器、浮动IP、Nova实例等。

而Zun和Kubernetes则是一种互补的关系,事实上,Zun社区正在积极地推进与Kubenetes集成。目前Zun与COE集成的工作主要集中在Kubenetes上。Kubernetes使容器更易于部署、管理和扩展。 但是,在OpenStack上使用Kubernetes仍然需要用户手动底层基础设施,如虚拟服务器集群。 用户需要负责初始容量规划,例如决定VM群集大小以及正在运行的VM群集的维护。Serverless容器技术或解决方案,如亚马逊网络服务(AWS)Fargate、Azure容器实例(ACI)和OpenStack Zun的出现,为在云上运行容器提供了一种可行的替代方案。 Serverless方法允许用户按需运行容器,而无需预先创建或管理自己的集群。Zun将利用Kubernetes作为编排层,Kubernetes使用OpenStack Zun来提供“Serverless”容器。

Zun中引入了Container与Capsule两个概念,Container负责集成对接Docker或其他容器引擎技术,Capsule的概念有点像Kubernetes Pod,代表一组容器。 Capsule用于将多个需要彼此紧密合作的容器进行分组,以实现业务目标。

Zun不准备实现COE提供的很多先进的功能(例如容器保活、负载均衡等),而是专注于提供基本的容器操作(CRUD),并保持和OpenStack的紧密集成。

与Nova Docker driver方案的比较:

Zun目标在于解决 Nova Docker driver方案存在的问题,独立于 Nova 之外实现 Docker 部署调度框架,自身实现与 Glance、Neutron、Cinder等组件的集成,但并不实现对容器编排引擎(Container Orchestration Engines COE)的部署调度。Nova-docker通过Nova API访问容器,而Zun不受Nova API的限制。

与Magnum方案的比较:

Zun和Magnum的差异在于Zun专注于提供管理容器的API,而Magnum则主要是提供部署和管理容器编排引擎(COE)的API。

Zun的基础架构

下面的Zun架构图,可以更好地理解Zun与OpenStack各组件之间的关系。

图1:Zun架构图

综上,Zun提供了一种OpenStack 容器的解决方案,不仅将多个OpenStack服务与容器技术有效地结合到一起,提高了OpenStack管理容器的能力,而且简化了容器的使用,扩展了容器的功能。同时,Zun社区的各项功能正在开发、补全当中,值得期待。

中兴通讯作为OpenStack基金会黄金会员和主要代码贡献者之一,致力于推动OpenStack的演进和发展。针对Zun社区,中兴通讯bp完成数居第一位,修复bug数居第一位,提交代码次数居第一位,代码审阅数居第二位。同时,中兴通讯在Rocky与Stein版本单项项目负责人(PTL),为Zun项目的发展,做出了卓越的贡献。未来,中兴通讯将不断加大对开源社区的投入,并积极寻求落地商用的机会。

  • 发表于 2018-11-15 11:51
  • 阅读 ( 1198 )
  • 分类:默认分类

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
不写代码的码农
Kemin

架构工程师

45 篇文章

作家榜 »

  1. Kemin 45 文章
  2. golanglover 5 文章
  3. D.Chen 4 文章
  4. salamander 1 文章
  5. 深圳-伟 1 文章
  6. 广训 1 文章
  7. PHP小菜 1 文章
  8. Undefined 0 文章