VMware的云原生应用战略

为方便阅读和分享,应读者要求,把《云原生应用战略》上、下两篇合并发表。作为福利,新增加了vSphere Integrated Container的演示视频。

在2014年VMworld大会时VMware宣布了全面支持容器,并前瞻性的指出容器和虚机是”Better together”的。转眼间一年过去了,在2015年刚结束的VMworld大会上,VMware发布了一系列和容器相关的技术和产品,我们逐渐清晰地看到VMware在云原生应用(Cloud Native Apps)领域的布局和蓝图,仿佛一幅宏大的画卷缓缓地展现在我们面前。

VMworld发布或展示的新产品和技术主要包括: vSphere Integrated Container (VIC), Photon Platform, 以及支持Flocker的ESX容器存储驱动。另外,早些时候发布的AppCatalyst, Photon OS 和Code Stream这几个产品也更新了版本。从技术栈上看,涵盖了云原生应用的开发栈,生产栈和DevOps三部分,这里分别给大家介绍一下。

vSphere Integrated Container

vSphere Integrated Container (VIC) 扩展了ESX的能力, 使得用户在虚拟化基础设施上迅速地部署容器应用,并且可以与已有的虚拟机集群无差别地统一管理。VIC包含了三种核心技术:虚机化容器(Project Bonneville), ESX 6.0的即时克隆(Instant Clone),优化的容器操作系统Photon OS (光子操作系统)。

1.虚机化容器(Project Bonneville)解决的是容器“先天不足”的安全性和隔离性问题。由于容器的本质是操作系统虚拟的运行环境,在一些场景难以满足企业要求,如公有云、机密数据应用等。目前较好解决的办法就是采用轻量级虚机来承载容器里的应用,从而容器就是虚拟机,虚拟机就是容器。不仅保留了容器快速灵活的特性,而且还具备了虚机硬件级别的隔离度,可谓珠联璧合,相得益彰。 Project Bonneville相当于在ESX上完整实现了Docker API,支持Docker Compose、 Swarm等工具。有关Bonneville架构详解可参考本文末。

2.即时克隆(Instant Clone)是ESX 6.0的新功能,可以快速地复制运行态的虚拟机。克隆虚拟机在云计算中已是家常便饭了, 但克隆运行着的虚机则是VMware独有的技术,不仅把模板虚机的磁盘镜像用CoW(Copy on Write)的方式复制,而且连新生成的虚机内存都做了CoW式的拷贝。这种方式克隆出来的虚拟机跳过了OS的启动步骤,在1秒钟内可创建出来,很接近在Linux里面创建Container的时间。

3.Photon OS是VMware为安全运行容器应用而发布的Linux发行版,特点是大大优化了虚拟环境中的Linux运行效率和安全性,并且由VMware公司提供企业级的支持。Photon OS完整版本大约有两三百MB,在VIC里面作为模板的是Photon微缩(pico)版本,大约只有25MB。这样生成的虚机称为“jeVM”(just enough VM),内存开销很小,为运行容器专用。

融合上述三种技术,创建虚机化容器的过程可以概括如下:先准备好一个运行态的Photon OS虚拟机作为模板,当需要运行容器化应用的时候,VIC使用即时克隆技术复制出一个虚拟机,并且把容器镜像中的文件系统mount到虚拟机里面,然后再运行容器镜像中的应用。整个启动过程象Linux容器一样迅速,并兼容Docker的容器镜像,而且还具有硬件级别的隔离性,毫不夸张地说是“一箭三雕”。更多技术细节参见本文末。

除了大大提高容器化应用的隔离性之外,VIC还有更“惊艳”的优势。因为容器就是虚拟机,用户现有大量管理虚拟机的工具可直接运用在容器之上,例如,容器的性能监控就是虚机的监控,容器的热迁移、HA、负载均衡等就是虚机的相应操作,还可以使用网络NSX和分布式存储VSAN,这些自然而然的强大功能都是vSphere用户了如指掌的。所以,当看到VMWorld上面的demo之后,用户通常是“WOW”一声惊叹,然后争相要求试用VIC。下图中可看到VIC和vCenter集成的界面。

VIC的演示视频:

视频内容

Photon Platform(光子平台)

VMware的云原生应用产品名字都是和光有关的,如Photon, Lightwave等,“光”的英文单词是“Light”,又有轻盈灵巧的含义。

VIC目标是给用户提供虚拟机和容器的统一管理平台(Unified Platform),相比之下,另一产品Photon Platform(光子平台)则是专门为云原生应用设计的,特别适合运行由成千上百、海量规模的容器组成的微服务应用。Photon Platform分为2个层次:Photon Machine 和Photon Controller,支持Mesos, Cloud Foundry, Kubernetes等开源框架。

Photon Machine (光子机器)

Photon Machine包括了轻量级的ESX Server(称为Microvisor)和内置的Photon OS。Microvisor和ESX Server相比,去掉了一些复杂的功能(例如vMotion, HA, FT, DRS等),使其管理更加简便,适合更大规模容器应用的快速部署。

Photon Controller(光子控制器)

Photon Controller是分布式的控制器,目标是帮助用户快速地创建各种云平台的集群,包括Kubernetes, Cloud Foundry, Mesos, Hadoop, OpenStack等。当云集群创建完毕后,用户可以通过该集群的API来调用。Photon Controller不再依赖传统的vCenter,它重新设计了集群的provisioning方法,即使面对数千结点的构建任务,也面不改色地轻松打发。

Photon Controller还使用了今年4月份开源的Project Lightwave来增强安全能力。Lightwave的代码是从vSphere源码安全模块中抽取出来的,是历经多年实用验证过的,这部分开源的ESX代码以及即将开源的Photon Controller,都显示了VMware推动云原生应用技术发展的决心。

从下面Photon Platform的架构图可以看到在这个多租户环境中命令的执行顺序如下:

1. 在同一个Photon Machine集群中分别创建Cloud Foundry和K8s的集群,

2. 用Cloud Foundry的命令在集群中部署和扩展应用

3. 用K8s的命令在集群中部署容器应用Pod

本节结束前再对比一下VIC和Photon Platform两个平台,前者是对现有ESX功能的延伸和扩充,使用户能够在已有的虚拟化平台上运行容器应用; 后者则是全新的平台,用于支撑海量规模的云应用,支持各种开放的API:

Flocker的vSphere存储驱动

微服务架构的容器里许多都是无状态的(stateless)的服务,如API gateway,web服务器等。无状态的容器优点很明显,可以快速启动、水平扩展和自由迁移。另一方面,有状态(stateful)容器的数量也逐渐增多,象MySQL,Redis,MongoDB等容器也很普遍。由于容器通常是频繁创建和删除的,这些有状态的容器需要把持久化数据保留在容器外(例如宿主机)的文件系统中。在Docker中可使用-v参数把容器的数据卷(data volume)映射到宿主机中,但当容器迁移到其他机器时,数据卷只能遗留在原来的宿主机上,容器也就无法访问到原来的数据了。

开源项目Flocker就是为解决上述问题而设计的,它把数据卷保存在共享存储上,在迁移容器时,将数据卷相应地挂载到目标主机的容器中。对容器而言,数据卷可以如影随形,“你走我也走”。为了支持持久化容器应用的运行,VMware发布了开源的Flocker驱动程序,在ESX虚拟机运行的容器可以迁移到另一个ESX的虚拟机中,同时带上该容器的数据卷。所有vSphere的datastore都支持Flocker,包括VSAN, VVOL, VMFS和NFS。通过这个驱动,分布式容器应用和分布式存储技术VSAN完美地结合,如同好马配好鞍一样。

感兴趣的朋友可以看看以下ESX上Flocker的演示:

视频内容

AppCatalyst

AppCatalyst直译就是“应用的催化剂”。顾名思义,这个工具是为了加快云应用开发过程,给开发者提供“本本上的数据中心”(Data center on a laptop)。

在云原生应用中,随着微服务架构和容器技术广泛使用,在开发调试的时候少不了用虚拟机构建分布式的环境,因此,用二类(Type 2)Hypervisor来搭建这类环境最适宜。AppCatalyst采用VMware企业级的Fusion虚拟化内核(目前支持Mac OS ),自带PhotonOS的虚机模板,能便捷地生成Docker和Vagrant的运行环境。新增的SharedFolder功能可在容器和宿主机之间共享持久化的文件,更加接近真实环境中的持久化场景。AppCatalyst还提供CLI和RESTAPI接口,适合多容器和微服务应用的自动化编排流程,支持Docker Machine。使用AppCatalyst可以生成稳定可靠的多结点、多容器的运行环境,只用一台laptop就可调试数据中心级的应用,想着都觉得酷。最让程序员们开心的莫过于AppCatalyst是免费的,可从这个网站下载:http://getappcatalyst.com/。目前支持Mac OS 10.9以上的操作系统。有关AppCatalyst的详细介绍请参见本文末。

vRealize Code Stream

目前主流的云应用开发都使用持续集成(Continuous Integration,简称CI)的模式,结合微服务的架构,每个小的更新都可以迅速地完成编译、构建、单元测试和集成测试等工作,然后部署到生产系统中去。但在企业传统的运维方式中,更新生产系统是非常慎重的事情,通常需要提前一定时间的规划,并且含有许多手工过程。显然,低速的运维方式已经不能匹配云时代敏捷迭代的开发方式,就是我们常说的Dev和Ops之间的矛盾,是现在企业亟需解决的问题。

vRealize Code Stream(VCS)就是帮助用户延伸和贯通整个DevOps流程的管理工具。VCS最主要的功能是流水线自动化(Pipeline Automation),很方便地在流水线中接入各种软件开发工具链(如Git, Jenkins,Selenium等),然后进行统一管理。软件项目象水管一节一节的分成阶段,每阶段包含若干个任务,在每阶段任务结束之后,设立象阀门一样的gating rules,用规则来控制流程是否往前推进。VCS内置了JFrog的Artifactory,用来存放任务的执行结果,如编译过的目标码,打包后的Docker镜像等,在任务间起到承上启下的作用,同时它还作为不同版本的存储仓库,发布应用时可以从中选择特定版本的。

VCS属于vRA(vRealize Automation)的一部分,已经部署vRA的用户可以直接安装VCS使用。VCS本身也内置了各类SDLC工具的支持,从这些工具中提取各种管理信息,如Jenkins中的Job Id等等。下面是VCS的接口图:

结束语

通过本文的介绍,我们看到VMware在云原生应用的各个领域全面发力,产品Roadmap涵盖了开发栈,生产栈和DevOps三大部分。其中的生产栈平台分为vSphere Integrated Container(传统与云原生应用混合)和Photon Platform(大规模云原生应用平台),适合不同转型阶段的企业选用。目前,Code Stream是可以交付给用户的正式产品,其他产品大多还处于Technical Preview阶段,预计在明年上半年发布用户可试用的版本,让我们拭目以待吧。

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

原文发表时间:2015-10-14

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

发表于

我来说两句

0 条评论
登录 后参与评论

扫码关注云+社区

领取腾讯云代金券