让容器的世界变得更美好

题图由作者西蒙摄于杭州西湖

作者西蒙为VMware资深架构师,负责基础架构和应用服务。本文获作者授权,转自西蒙个人公众号:疯云时代 ,编者作了少量修改。

容器技术发展迅猛,近期热点活动不断,作为容器世界的主力军,VMware也在这些活动中频繁亮相,着实吸引了不少眼球。

Dockercon2016

VMware是金牌赞助商。今年大会的关注点是如何更好地用Docker技术来解决应用的可移植性问题,如何将更多的传统应用迁移到容器环境,如何在生产环境中使用容器技术。VMware在主题演讲中介绍了如何利用NSX和VSAN为容器环境提供更好的的网络、安全与存储服务。

香港开源年会

VMware是金牌赞助商,我的同事Fabio做了题为“开源世界与云原生基础架构软件“的演讲,参会者对VMware的解决方案表示出了浓厚的兴趣。

我最近也参加了一些市场活动和用户交流,感觉疑问最多的还是虚拟机与容器之间的关系,下面我就借着这个话题来谈一谈VMware容器相关解决方案的一些新进展。

当我们谈到容器时,经常会把它和虚拟机进行比较,容器更轻量,更快捷,有更好的可移植性,实际上它们没有优劣之分,是为了满足不同需求而存在的,有着各自的应用场景。在Docker官网上有一篇文章,把虚拟机和容器比喻成别墅和公寓,有兴趣可以读一下:

https://blog.docker.com/2016/03/containers-are-not-vms/

VMware在这方面所做的努力主要是将两种技术有机的结合,发挥各自的长处,取长补短。容器是一种非常好的应用封装方式,有效地解决了应用的可移植性问题。但是作为应用的运行环境,它所提供的服务还不够完善。而这恰好是虚拟机技术所擅长的。

在2015年的VMWorld和vForum上,我们发布了容器相关的解决方案,主要内容包括以下几个部分:第一是开发者工作站AppCatalyst;第二是通过增强vSphere来支持容器,即vSphere Integrated Containers;第三是单纯的容器支撑环境PhotonPlatform;第四是容器和存储、网络、安全和管理服务;第五是基于容器和虚拟机的DevOps解决方案。我和我的同事Henry之前写过一些文章来介绍上述方案,如果你有兴趣,请访问我们的个人公众号或VMware中国的公众号来进行查阅。其中比较容易混淆的是第二项和第三项,之前我在比较这两个方案的时候使用的是下面的这张表格:

在过去的一年里,我们在产品策略上做了一些微调,上面的描述已经不能准确地概括这两个方案的区别。因此我准备利用这个机会重新介绍一下它们的区别。

用一句话概括Photon Platform(光子平台,以下简称PP)路线:Containers on top of VMs,即运行在虚拟机之上的容器,或者说把容器跑在虚拟机里。用一句话概括vSphere Integrated Containers(以下简称VIC)路线:VM as Container,即虚拟机一样的容器。第二句话实在不好理解,所以我后面会花些篇幅来进行解释。

Photon Platform(光子平台)

首先我们来谈谈PP。一些用户会在虚拟机里安装容器的宿主OS,然后在上面跑多个容器。PP也是这样做的,我们开发了一个深度定制的宿主OS——Photon OS,它是一个开源项目,目前Github上的最新版本是v1.0。因为虚拟化层抽象了硬件,用于运行容器的Photon OS可以非常精简。但是如何管理这些运行Photon OS的虚拟机呢?我们开发了另一款开源产品:Photon Controller,Github上的最新版本是v0.9。与vSphere的主控vCenter Server不同,PP的目标用户是开发者和自动化运维人员,因此它的管理接口主要是命令行和API,图形界面是辅助的,用于监控功能。下面几张图分别展示了PP的Restful-API,命令行和图形界面。

有了PP,我们就可以把多台ESXi服务器上硬件资源加以整合,再加上Photon OS的支持,它就成了一个Cluster/Container as a Service平台,现有组件提供的功能并不包括容器的管理与编排服务,要实现这一部分功能,需要借助于Kubernetes,Mesos,Swarm或是Cloud Foundry等,目前PP与这些方案都做了集成,可以快速简便地加以部署。

vSphere Integrated Containers (VIC)

下面再来看看VIC,它的理念颠覆了常规意义上的容器用法,容器通过共享更多资源以实现它的效率,但同时也牺牲了一些虚拟化能够带来的好处,最明显的就是安全性,在开放环境或是公共环境中使用容器时要特别注意这一点。VIC则为每个容器构建一个“虚拟机”环境。同时你不需要在虚拟机内安装和维护宿主OS,vSphere帮你搞定这一切,这里面提到的虚拟机不是传统意义上的虚拟机,我们称之为ContainerVM或是MicroVM(后面支撑它的技术主要是Instant Clone)。

下图是通过传统方法在虚拟机运行容器(左)与VIC模式(右)的对比,最大的区别是隔离性,左边容器与虚拟机是多对一,运行在同一个虚拟机内的容器之间靠namespace隔离,右边容器与虚拟机是一对一的,运行在微虚拟机内部容器靠微虚拟机来提供隔离保护。

基础架构管理员只需要建立一个“虚拟容器主机”,即将集群中的一部分或全部资源指定给容器使用。这个虚拟容器主机类似于Swarm的集群。然后应用管理员和开发者就可以通过原生的Docker命令和工具使用这部分资源来运行容器了。

下面是VIC的架构图,通过与vSphere之上的网络(NSX)和存储(VSAN)方案进行集成,可以为容器提供完善的网络与安全服务和持续数据存储服务。VIC也是一个开源项目,目前Github上的最新版本是v0.4。

了解了上述内容之后,我们可以再延展一点,讨论一下通过虚拟化来构建容器环境的必要性和益处。Docker提供了物理机部署(Docker Machine)和集群管理方案(Docker Swarm),还有一些基于Docker官方组件开发的容器解决方案也是基于物理机的。

在虚拟化平台之上提供CaaS服务,概括起来主要有下述优势:

1,开发者与基础架构管理团队分工界面明确支持容器的虚拟机有两面性,对于开发者而言,它是一台具有弹性的“物理主机”,上面部署了容器宿主OS,可以通过命令行或API执行各种操作,包括调用虚拟化层提供的网络与存储服务。对于基础架构管理员来说,这个虚拟机是个黑盒子,管理员只需要负责为这个黑盒子分配相应的计算、存储和网络资源即可,不需要关心这些资源是如何被使用的。

2,安全的多租户环境

有了虚拟机的支持,我们可以提供完美的多租户服务,管理界面和相应的资源与服务都将被很好地隔离。在这方面容器是有架构缺陷的,只能借助于虚拟化或沙箱技术来实现隔离与保护,自身无法解决。

3,技能、一致性与效率

相对于容器,基础架构团队对虚拟化平台有着更多的管理经验,管理工具也很丰富。通过将容器与虚拟化相结合,原有的技能可以沿用。此外,虚拟化平台在资源管理与调配上具有很高的自动化水平,效率很高,集群服务的服务水平也较高,有更好的弹性与可用性。

4,兼容性

借助虚拟化,在一个平台之上我们可以运行多种不同的容器环境,如Linux和Windows等。也可以服务于不同类型的应用,如适用于虚拟机的传统应用,和适用于容器的云原生应用。不同安全等级和不同存储服务等级和应用也可以部署在一起。

我的公司:

VMware中国 (威睿账号)

VMware中国研发中心 (研发中心账号)

VMware招聘 (招聘信息)

我和我的同事们:

乐生活与爱IT (软件定义存储)

亨利笔记 (容器和云原生应用)

最终用户计算 (企业移动化)

IT那点事儿 (软件定义网络)

疯云时代 (基础架构与应用服务)

原文发布于微信公众号 - 亨利笔记(henglibiji)

原文发表时间:2016-08-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券