技术探索:容器与OpenStack

Posted UMCloud优云数智

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了技术探索:容器与OpenStack相关的知识,希望对你有一定的参考价值。

执行摘要


   “作为一个社区最重要的事情是将OpenStack看作是一个不可知的集成引擎,这将会使用户处于成功的最佳位置。就像当初面对计算、存储和网络时不选择重新造轮子一样,我们也会以相同的观点对待容器。”

      ——Mark Collier, COO, OpenStack Foundation


容器毫无疑问是当前的热门话题。OpenStack用户调查显示超过一半的受访者对容器和OpenStack云相结合感兴趣。由于开源社区,尤其是Docker的贡献,近来容器已经在开发和运维社区中得到了显著的普及。


Linux内核已经支持容器,现在连Windows也在跟进,但是,企业级的容器应用仍然是一个新兴的机会,因为标准仍在形成中,围绕容器的生态系统还相对较新,同时投资回报率也是不确定的。


容器是一门正在发展的技术,而OpenStack则是不断发展来支持它,就像在过去支持其他新兴技术一样。与在数据中心修建新的垂直竖井去管理容器相比,IT部门更看重OpenStack提供的跨平台API去管理虚拟机、容器和裸机。


容器支持只是OpenStack基本价值主张的一个例子。通过使用OpenStack作为云战略的基础,用户可以在底层云基础设施中添加新技术,即使是实验技术,并在合适的时间将其部署到生产环境而不影响到多租户的安全、隔离、管理、监控以及网络和存储等方面。


     为了满足用户不断增长的对容器的兴趣和需求,本文为读者详细介绍了在OpenStack下容器以及容器管理,描述了与容器相关的服务将如何在现在和未来的OpenStack发行版中工作和发展。


什么是容器


      容器是一个隔离的、可移植的环境,该环境中用户可以在对应的依赖和库下运行各种应用程序。容器不是虚拟机,在某些方式上它们很相似,但是在更多方面它们是不同的。与虚拟机一样,容器将系统的计算、存储和网络资源共享并提供访问,与虚拟机不同的是,在同一宿主机上的所有容器都共享同一个操作系统内核,并通过namespaces和cgroups使程序、运行时环境以及其它服务见相互隔离。Docker添加了容器镜像的概念,允许容器在任何现代Linux内核主机上使用。不久的Windows应用程序也将享受到Windows主机之间的可移植性。容器镜像比之虚拟机镜像,能够实现更快速的应用部署。



图1 容器VS虚拟机


如今,容器主要被用在两个主要方面:

一是系统容器(system or OS containers)。系统,包括操作系统,应用程序以及服务等都在一个容器中,这种容器的使用场景与虚拟机非常相似。


二是应用容器(application containers)。容器是提供了一种可移植的捆绑和运行应用程序的方法。它可以被用来分解和隔离应用程序的各个部分,这些部分被称作是微服务(microservices),以允许更加细粒度的拓展,更加简单的管理,更好的安全配置并解决了之前与配置管理工具(CM)相关的一系列问题。它们是使用场景与虚拟机完全不同。


开发者可以将应用程序或服务与运行时必要条件和程序所需服务一起放在容器中而不必包括一个完整的操作系统,这使得容器镜像通常只有几Mb大小,而虚拟机镜像则会大的多。


     虽然容器技术已经存在有些年了,但是知道容器镜像的提出才真正使该技术流行起来。概念上来说,容器镜像可以被认为是一个可以被存储在磁盘上的容器文件系统的快照。容器的文件系统是分层设计的,就像一系列commit在git仓库中被保存一样,使得容器镜像能够知道它来源于哪个父镜像。容器镜像使得像Docker这样的工具去简单的创建和部署容器,只需要简单的命令就可以完成app的启动。因此,容器镜像的概念才是真正使得容器重回主流的重要原因。


OpenStack基础设施下容器的价值


云基础设施提供了完整的数据中心管理解决方案,在这里容器、hypervisor均只是一个稍大一点的系统。openstack包含了多租户安全与隔离、管理与监控、存储和网络等,这些服务在各个云或者数据中心的管理中,不论容器、虚拟机还是裸机服务是否被使用到,都是至关重要的。


容器是对现有技术的补充,它带来了一些列新的好处。OpenStack使组织能够选择和使用正确的工具去完成工作,也支持裸机和虚拟机上的容器。运维人员需要意识到的是容器并不能提供像虚拟机一样的安全隔离能力,这意味着它不能被简单看作是虚拟机的直接替代品。例如,服务提供商为了向租户的进程提供鲁棒的保护,使其免受在其他容器中的恶意代码的影响,通常会选择将容器运行在虚拟机中。另外一种方法是使用OpenStack Magnum的bay调度一组虚拟机或裸机给单独的租户来避免这种风险。对很多组织来说,OpenStack上的容器带来了额外的灵活性部署而不需启用一个单独的容器设施。

组织会因为以下原因使用容器:

  • 容器提供了确定性的软件打包,并很好地适应不变的基础设施模型

  • 容器在微服务的封装上表现很好

  • 容器使用了简单、轻量级的容器镜像

        使用容器编排框架的好处之一是它可以在任何时间点在OpenStack和裸机环境下切换,将应用从基础设施中提取出来。在这种方式下,任一选项可以由将编排引擎指向目标环境来选择。从Icehouse版本起OpenStack的编排服务(Heat)为Docker提供支持,随着最近Google对基金会和开发者的赞助,Kubernetes编排引擎也被集成至OpenStack中。事实上,在OpenStack Magnum 容器即组件中,Kubernetes bay已经是默认的bay类型。


容器用例


根据ZDNet的一项调查显示,54%的受访者认为容器加快了应用部署时间,40%认为容器简化了应用部署步骤,38%认为容器是开发和测试更加合理,31%同意容器降低了开发和部署开销,还有25%认为容器有助于服务器整合。


开发是容器技术的一个重要机会。本质上来说,开发者可以创建一个应用容器,包括程序、运行化境以及各种类库等,并将其移动到任何机器上,包括物理机和虚拟机。由于容器本身是真正的无状态的,开发者可以无需担心兼容性的将容器看作是一个简单分配的一次性开发环境。这大大加快了开发效率。


在build/CI环境中,容器可以使组织更快地测试更多的系统排列,提供更高的并行性,以加快开发速度。为质量考虑,容器可以为黑客测试提供更好的帮助。


由于容器是无状态的,它们可以被用在向不变的基础设施的转变上。通过一个容器镜像可以生成成千上万个容器,对该镜像的修改可以很快应用到所有容器实例上。


无状态的容器同时也有助于高可用性,容器可以在不同的底层硬件上运行,所以如果一个宿主机出现故障,管理员可以将应用程序容器路由至其它主机运行。


已经有一部分有经验的用户开始在生产中一定规模地使用容器了,Rackspace使用OpenSatck来支撑容器并用在生产中,包括Rackspace私有云,Rackspace公有云和Rackspace云数据库。Pantheon是一个为超过100,000Drupal和Wordpress站点提供服务的网站管理平台,同样也是在基于OpenStack CLI和RESTful API的超过1,000,000个容器上运行的。


容器与OpenStack的现状


毫无疑问,OpenStack在适应新技术方面是云计算架构的佼佼者。社区会做出技术相关的决议,来创建新的项目以支持OpenStack部署和应用。在2014年,OpenStack社区决定将容器作为需要支持的重要技术,从而衍生出了几个项目来支持容器和容器的第三方生态系统。


OpenStack正在朝着全面支持容器不断演变,如今它支持LXC和Virtuozzo的容器,Docker应用容器和Docker Swarm,Kubernetes和Mesos容器在Liberty版本的Magnum中也得到了支持。


使用OpenStack Nova来构建容器宿主环境


计算组件Nova为OpenStack云管理计算资源,这些资源可以是从类似于KVM、Xen、VMware vSphere等hypervisor生成的虚拟机,也可以是LXC或OpenVZ的容器。后者系统容器技术由Nova通过libvirt支持,libvirt是一个提供虚拟化平台管理的开源API、守护程序和管理工具,在大多数Linux发行版上均可使用。



Rackspace私有云在生产环境中使用LXC容器为所有OpenStack基础组件提供服务,支持Icehouse、Juno和Kilo作为生产环境版本。不同于Docker社区定义的微服务模型,Rackspace决定将容器当作一次性裸机使用,他们发现容器适合在OpenStack云下大规模使用使部署者能更好地利用资源。


容器与OpenStack的展望


2014年5月OpenStack社区成立了容器小组,将推动OpenStack下的容器技术设为目标,并为最新的技术提供服务。目的是为了让用户创建和管理容器的体验与他们期望调用Nova去获得虚拟机的一致,同时提供一整套兼容的API来管理用户的工作量,不论其是在虚拟机还是裸机上。总体而言,OpenStack的目标是为未来十到二十年提供基础设施框架,随着类似于容器的新技术出现,社区将会始终支持它们,采取一致和开放的态度。

三大关注点:

  • 对OpenStack下的容器提供全面支持

  • 简化生产环境下多租户容器服务的设置

  • 为还未确定明确容器选择的OpenStack运维人员提供模块化的选择

现在已经有若干OpenStack项目杰里容器技术,使OpenStack本身更加完善,它们分别是:Magnum、Kolla和Murano:

  • Magnum被设计来为多租户提供容器即服务,它提供了容器特定的API

  • Kolla旨在提供一个动态的OpenStack控制平面,每个OpenStack服务都运行在Docker容器中

  • Murano是一个应用目录方案,它允许打包好的应用程序部署在OpenStack上。

图2 OpenStack容器即服务支持框架



下期我们的容器专栏将针对Magnum、Kolla和Murano做简要介绍。


原文出自:https://www.openstack.org/assets/pdf-downloads/Containers-and-OpenStack.pdf



关于UMCloud



Mirantis是OpenStack社区代码贡献全球排名第一的纯粹OpenStack专业厂商。Mirantis提供OpenStack软件企业商用发行版(MOS), 交付架构咨询、技术集成、部署服务,用于支持企业构建生产级别的开放云平台。Mirantis的全球客户覆盖200+全球500强企业大客户,秉承开放无锁定的理念,构建OpenStack云计算的合作生态圈,为客户提供最优化的云平台解决方案。

Mirantis自2015年进入中国以来,以它雄厚的技术实力和规范的专业服务,已为深交所深证通,邮储银行,国家电网,中国移动,中兴通讯,华为,联想、百联集团,中国烟草,杰赛科技等数十家企业级客户提供OpenStack云产品和专业服务及培训。

为了更好的服务中国本地客户, Mirantis与中国最大的独立公有云厂商UCloud在2016年初成立了合资公司——上海优铭云计算有限公司UMCloud,全面本地化的运作来引入Mirantis在OpenStack领域的雄厚技术积累,结合UCloud对于中国本土云计算客户需求的精确洞察力,打造自主开发的更符合中国客户需求和国情的国产OpenStack软件发行版本,培养中国本土OpenStack领域的技术专家和工程专家,与Mirantis的全球专家资源池携手合作,更高效,快速,高质量的帮助中国企业客户落地OpenStack云计算。


扫描下面的二维码关注UMCloud,获取最新OpenStack技术资讯、UMCloud公开培训等信息。




以上是关于技术探索:容器与OpenStack的主要内容,如果未能解决你的问题,请参考以下文章

六大核心技术凸显OpenStack实力

Docker02:Docker核心技术探索网络命名空间和网络隔离

聚集云原生,可观测性的实践与探索 | 线下技术沙龙

持续优化云原生体验,阿里云在Serverless容器与多云上的探索

深入探索spring技术内幕: spring概述

新东方利用容器技术在用户自服务方面的探索