【编者的话】Amazon和Google仍然是在Docker Linux云端容器领域中最强劲的竞争者,由于微软Azure的加入使得他们的竞争进入白热化状态。本文主要介绍了 Google GKE和 Amazon ESC两个产品在实现自动收缩,冗余性和互操作性上的不同之处,当然还提到了微软Azure的现状。
这些公司的云端容器服务将 Docker容器管理 从用户中抽象出去,从而更加容易地部署和扩展构建在容器之上的应用。但是,在他们成熟的产品中存在着关键的不同,其中包括每家公司为实现自动收缩,冗余性和互操作性方面所选用的第三方工具和云服务。
Google容器引擎(GKE) 由pod、replication controller和节点组成。pod是一组特定的应用程序逻辑主机模型的容器逻辑分组;replication controller确保特定数量的pod副本任何时候都在运行;节点是加强了容器环境的Google计算引擎虚拟机。
GKE基于Google的 Kubernetes 容器编排平台。Kubernetes 1.1版本在1.0版首次亮相之后4个月的11月24号发布,是市场中第一个能够通过水平节点自动伸缩功能来实现自动伸缩节点的产品,这个功能受到用户的高度追捧,从而为许多使用GKE的案例提供了有力的支持。
“我们为很多各种类型的项目使用自动伸缩“, Descartes Labs公司的联合创始人和首席云架构师Tim Kelton如是说。这家公司位于新墨西哥洲,是机器学习方面的初创公司,能够处理PB级别的卫星数据。
自动伸缩的pod在处理大型批处理作业时能够派上大用场,Kelton解释道。有时,他的公司处理PB级的数据,这就需要扩展到3000个内核。在Kubernetes的第一个版本(随后很快被GKE合并)中,”这不是核心特性集的一部分“,他说。
虽然GKE不支持垂直容器扩展或者节点自动伸缩,但是,根据GKE高级产品经理,同时也主导Kubernetes产品管理的David Aronchick透露,这些功能很快就是实现。
Amazon EC2容器服务(ECS) 由服务、任务和实例组成。服务是构成应用程序的任务组,而实例是支持容器的弹性计算云端虚拟机,与GKE中的节点很像。
Google的ESC的自动伸缩能力与GKE是相反的:使用亚马逊CloudWatch和亚马逊网络服务Lamda可以实现服务自动伸缩,实例也可以基于CloudWatch metrics进行自动伸缩,但是任务--等同于pod属于粗糙逻辑,无法自动伸缩。
虽然所有类型的自动缩放都很重要,但是亚马逊用户希望将任务自动伸缩加入ECS中。
“运行一个新的实例意味着你要有额外的容量来运行额外的任务,但这并不意味着任何新的任务都将被启动”,ACI信息科技集团副总裁Chris Moyer如是说。ACI是一个基于Web的内容聚合技术的纽约公司,也是 TechTarget 贡献者。“如果你只是自动伸缩实例,并不能真正帮助你解决额外的负载--你必须真正运行额外的任务来实现扩展。”
在ESC发展过程中,亚马逊优先发展在同一个集群中,针对基于用户需求的任务自动伸缩冗余的本地跨越 可用区域 (AZs)的能力,当ESC服务调度启动新的任务时,它也会尝试通过集群中的AZs自动平衡这些任务。
“这很重要,因为单个AZ允许失败,所以如果两个任务都允许在同一个AZ中,很容易拖垮你的服务“,Moyer说。
据Aronchick介绍,Google可以在GKE中通过命令行接口(CLI)跨多个区域。
"实现跨区域非常容易,两三条命令就能搞定",Aronchick如是说。
然而,这就要谈到GKE用户最大的心愿:将跨区域功能改进到Web界面上,包括跨域集群扩展功能。
“实现用户界面需要大量工作”,Vendasta科技首席架构师Dale Hopkins说,Vendasta为媒体公司设计销售和营销软件。用户界面目前支持集群创建以及其他少数功能。Hopkins说:“扩展集群是不直观的。”
ESC作为一个可扩展平台,旨在融入客户现有的工作流,主要处理代表用户的集群状态。将ESC集成到现有工作流中来兼容客户在用的工具,比如用以高级调度的 Apache Mesos 。亚马逊还自豪的声称拥有广泛的容器伙伴网络来为亚马逊ECS贡献新特性,比如监视,持续集成和安全。
同时,Google已经与一批云端容器合作伙伴合作,这些合作商允许Kubernetes可以通过多个云端供应商被部署-这也是CLI现在的一个功能,Aronchick如是说。去年夏天Kubernetes 1.0版本发布时, Google引导了 Cloud Native 计算基金会的成立,基金会成员包括云服务公司,比如IBM和Red Hat,以及终端用户如eBay和Twitter。
“[附] Kubernetes,其实我可以在亚马逊部署,在Azure上部署,在IBM上部署,也可以部署在我自己的物理硬件上,”Descartes的Kelton 说。 “这是非常有吸引力的,因为我们有选择。”
Google也有一个开源项目,拥有数百提交者和每月数以千计的代码提交,使得 Kubernetes可以快速的添加新功能,比如水平pod自动扩展。
Google是Kubernetes的创始者,而且Google做了很多杰出的工作壮大了社区,451 Research的研究员Jay Lyman如是说。
尽管如此,使用老牌和熟悉的次级亚马逊服务来实现集成使得亚马逊ECS特别吸引新的客户。
一家总部位于纽约的公司,与一些大的企业就IT项目上进行咨询,计划在两个新项目上使用ECS, 据其创始人John D'Esposito介绍。驱使我们使用ECS的主要优点是使用现有的、成熟的基础设施服务比如弹性负载平衡,虚拟私有云,身份和访问管理,以及弹性块存储可以实现无缝集成。
GKE和Compute Engine的定价还是对客户非常有吸引力的。除了在10分钟为单位收费的VM资源的底层,GKE包括免费的Kubernetes主节点 - 这是特别吸引Vendasta的Hopkins的地方。
“直到我可以获得大量机器,我才会给 Kubernetes支付额外的费用。对于第一套机器,GKE为我免费提供Kubernetes节点”,Hopkins说。
在Kubernetes和容器引擎被引入之前,Hopkins和Kelton都已经在用Google云服务,包括Google App引擎。这样,数据重力就会在他们所算则部署的云端容器上起作用。
“我们的大多数数据集是PB级规模的,所以你不能只是移动或复制它们,你必须真正去计算数据”,Kelton说。大多数数据目前存放在Google云平台,虽然Descartes不与AWS的合作伙伴合作。
虽然Google和亚马逊在云端容器竞争中到目前为止仍处于前沿,但亚马逊最大的竞争对手仍然是微软的Azure,它在有限预览阶段拥有自己基于Linux的云端容器的服务,以及Windows Server的新版本,今年之后,将支持基于Windows的容器。
“我们的大多数客户都是......无论是在Azure或亚马逊,” 位于Rochester的HKM 咨询公司的合伙创始人Chris Riley如是说,“微软已经拿到了一些他们正在开发的有趣工具。如果我们看到一个次要的,它很可能Google之前的Azure“。
由于很多微软的产品,简单性和易用性是设计重点,根据Lumagate的CTO-Kristian Nese介绍,Lumagate是挪威的一家微软Azure系统集成商。
“我们现在部署Azure的容器服务,仅仅需要100行代码,”NESE说。 “一旦你部署了Azure的容器服务,你实际上部署了23个资源......如果你想手动做到这一点,可能需要数千行代码。”
Azure容器服务在预览阶段也支持自动扩展,是一个独立服务形式,被称作 VM量表集 。
Azure还将提供成熟和熟悉的工具来管理容器,如Azure的资源管理器,Nese补充说。
原文链接: Cloud containers race heats up between Amazon and Google (翻译: 李加庆 )