当今Google技术市场的云容器服务竞争加剧,谷歌,亚马逊与微软Azure正在为开发他们的服务而努力,从而能够更好、更快的适应市场。
这篇文章通过对3种不同的云容器平台进行深入比较,让读者了解到哪一种平台适合您的企业发展。
Docker Linux云容器中最重要的竞争对手仍然是亚马逊和谷歌,由于微软Azure加入,他们的竞争正在如火如荼的进行着。
亚马逊网络服务和Google正积极开发云端容器服务,从而更好的适应企业应用开发业务。
这些公司的云容器服务于Docker容器管理能够远离用户,从而更容易部署和扩展其上构建的应用程序。 然而,他们在彼此的产品之间仍存重大差异,包括每个产品都选择实现自动缩放,冗余和与第三方工具和云的互操作性。
自动缩放是竞争的主要关键点
Google容器引擎(GKE)由pod,复制控制器和节点组成。 Pods是对应用程序特定的逻辑主机建模的容器的逻辑分组。 复制控制器确保任意一个时间运行特定数量的pod副本。 节点是支持容器化环境的Google Compute Engine虚拟机。
GKE基于Google的Kubernetes云容器业务流程平台。 Kubernetes 1.1版,11月24日发布,1.0个月后***亮相,是市场上***个使用水平pod自动缩放功能自动调整pod的功能,这是用户非常寻求为GKE多种用例提供理由的功能。
笛卡尔实验室公司的共同创始人兼云架构负责人Tim Kelton说,“我们对所有类型的项目都进行了自动缩放,这是一家位于美国马萨诸塞州洛斯阿拉莫斯市的机器学习公司,负责处理PB级卫星数据。
(备注:“TB是一个计算机存储容量的单位,它等于2的40次方,或者接近一万亿个字节(即,一千千兆字节)。”
一提到数据量级,人们通常会联想到美国国会图书馆(见图)。德勤、麦肯锡、IBM、Gartner和移动广告公司Adfonic的数据专家向TechTarget记者介绍了PB级数据究竟有多大。
麦肯锡***分析师Michael Chui指出,美国国会图书馆“在2011年4月前已经收集了235TB的数据,而一个PB相当于它的4倍。”
TechTarget自己的百科网站Whatis有关于PB大小的定义:“PB是数据存储容量的单位,它等于2的50次方个字节,或者在数值上大约等于1000个TB。”
未来学家Raymond Kurzweil他的论文中对PB的定义进行延伸:人类功能记忆的容量预计在1.25个TB。这意味着,800个人类记忆才相当于1个PB。
如果这样还不够清楚,那么Adfonic的CTO Wes Biggs给出了下面更直接的计算:
假设手机播放MP3的编码速度为平均每分钟1MB,而1首歌曲的平均时长为4分钟,那么1PB歌曲可以连续播放2000年。
如果智能手机相机拍摄相片的平均大小为3MB,打印照片的平均大小为8.5英寸,那么总共1PB的照片的并排排列长度就达到48000英里——大约可以环绕地球2周。
1PB足够存储整个美国人口的DNA,而且还能再克隆2倍。)
Kelton解释说,自动缩放可以派上用场。 有时,他的公司处理了一百PB的数据,这需要扩展到3万个内核。 他在Kubernetes的***个版本 - 这是由GKE不久之后加入的 - “这不是核心功能集的一部分,”他说。 GKE的高级产品经理David Aronchick表示,GKE不支持垂直容器扩展或节点自动缩放,但是这些功能即将推出,他还负责Kubernetes的产品管理。
同时,亚马逊的EC2云容器服务(ECS)由服务,任务和实例组成。 服务是构成应用程序的任务组,而实例则是支持容器的弹性计算云虚拟机,非常像GKE中的节点。
Amazon ECS的自动缩放功能与GKE的功能相反:服务可以使用Amazon CloudWatch和Amazon Web Services(AWS)Lambda进行自动缩放,实例也可以基于CloudWatch指标进行自动缩放,相当于pods - 不能自动缩放。
虽然所有类型的自动缩放都很重要,但是Amazon用户希望将自动缩放功能添加到ECS中。一个Web内容聚合器ACI信息组技术副总裁Chris Moyer说:“旋转一个额外的实例意味着您有额外的能力来运行其他任务,但并不意味着任何新的任务将被转移。
“如果你只是在自动缩放你的实例,它并没有真正的帮助你处理额外的负荷——你必须把额外的任务放大来扩展。”
跨越区域的冗余
在开发ECS时,亚马逊优先考虑在同一集群中本地跨越可用性区域(AZ)的能力,以便根据客户需求对任务自动缩放进行冗余。 当ECS服务调度程序启动新任务时,它还会尝试在集群中的AZ之间自动平衡。
“这很重要,因为单个AZ可以失败,所以如果两个任务都在同一个AZ,那可以轻松地取消你的服务,”Moyer说。
根据Google的Aronchick,Google可以通过命令行界面(CLI)跨越GKE的多个区域。
“真的很容易 – 只需两三个命令,”他说。然而,这涉及到GKE客户***的愿望清单项:Web UI的改进,包括跨区域扩展集群。
Vendasta Technologies在Saskatoon Sask的***架构师Dale Hopkins表示:“UI需要大量的工作,该公司为媒体公司建立销售和营销软件。 霍普金斯说,UI目前允许集群创建和更多。 “如何扩展集群是非直观的。”
互通性
ECS被构建为一个可扩展平台,旨在被放置在客户现有的工作流程中,主要用于代表用户处理集群状态。 与现有工作流程的集成的一部分适用于客户已经使用的工具,例如用于高级调度的Apache Mesos。 亚马逊还拥有广泛的云容器合作伙伴网络,向亚马逊ECS提供诸如监控,持续集成和安全性等功能。
据Aronchick介绍,Google同时建立了一个云容器合作伙伴联盟,使得Kubernetes能够跨多个云提供商部署 - 而且也是今天的CLI功能。 当Kubernetes 1.0去年夏天发布时,Google领导了Cloud Native Computing Foundation的创建。 基金会成员包括企业云服务公司,如IBM和红帽,以及最终用户Box,eBay和Twitter。
笛卡尔的Kelton说:“有了Kubernetes,我实际上可以在Amazon上部署,我可以部署在Azure上,我可以部署在IBM上,我可以部署在我自己的物理硬件上。 “这很有吸引力,因为我们有选择。” Google还有一个开源项目,每个月有数百个提交者和数千个提交,允许Kubernetes快速添加新的功能,如水平pod自动缩放。
451研究公司的分析师杰·莱曼(Jay Lyman)说:“Google是Kubernetes的***,Google对此做得非常好,扩大了该社区的发展。
根据创始人约翰·德埃斯波西托(John D'Esposito),一家总部位于纽约的一家咨询大型企业IT项目的公司计划在两个新项目中使用ECS。 “促使我们使用ECS [包括]与现有的经过验证的基础设施服务(如弹性负载平衡,虚拟私有云,身份和访问管理以及弹性块存储)的无缝集成的主要优点。
GKE和Compute Engine定价也非常吸引客户。 除了以10分钟的增量为基础的虚拟机资源收费,GKE还免费提供了Kubernetes主机,这特别适用于Vendasta的Hopkins。 他说:“我没有为Kubernetes付出代价,直到我进入大量的机器--GKE为***套机器免费提供了Kubernetes的主人,”他说。
在推出Kubernetes和容器引擎之前,霍普金斯和凯尔顿都已经使用Google云服务,包括Google App Engine。 因此,数据重力也起到了他们选择部署云服务器服务的作用。
Kelton说:“我们的大部分数据都是在PB级,所以你不能只是移动它们或复制它们,所以你必须将数据移动到数据旁边。 大部分数据目前都存在于Google Cloud Platform中,尽管笛卡尔与AWS的合作伙伴合作。
Microsoft Azure云容器服务准备就绪
尽管Google和AWS在云端容器战争中处于领先地位,但亚马逊最为关键的竞争对手仍然是微软Azure,它拥有自己的基于Linux的云端容器服务,预计将有限,以及今年将推出的新版本的Windows Server 支持基于Windows的容器。 “我们大多数客户都是在Azure或亚马逊,”马萨诸塞州罗彻斯特HKM咨询公司的创始合伙人克里斯·莱利(Chris Riley)说,“微软有一些有趣的工具正在开发中。 如果我们来看一个次要的,那可能是Google之前的Azure。“
与许多微软产品一样,简单易用的使用是设计的重点,根据Kristian Nese的说法,他是挪威的微软Azure系统集成商。
Nese说:“当我们今天部署Azure云容器服务时,它的代码是100行。”“一旦部署了Azure容器服务,就可以部署23个资源。如果您手动执行这个操作,它很可能会导致数千行代码。”
Azure容器服务还在工作中以独立服务的形式进行了自动缩放,这一服务也在预览中被称为VM Scale集。Nese还说,Azure还将提供一些现有的、熟悉的工具来管理容器,比如Azure资源管理器。评估Azure容器服务与Google和AWS的对比
David Linthicum、云技术合作伙伴AWS、谷歌和Azure都提供了自己的云容器服务。尽管它们各有优缺点,但对您来说***的服务取决于您的应用程序需求。
随着越来越多的组织使用容器技术来部署云应用程序,看起来容器和云将会加入到更时髦的环境中。因此,三大云服务提供商——亚马逊网络服务、微软Azure和谷歌——在市场上拥有自己的容器服务也就不足为奇了。然而,这些服务并不是生来平等的。
出于本文的目的,云技术合作伙伴,一家位于波士顿的云计算咨询公司,对Amazon Web Services(AWS)、Google和Azure容器服务进行了内部审查,对技术进行了轮询咨询,并检查了用例。在评估或使用基于云的容器服务时,该公司考虑了几个重要的特性,包括数据管理、可伸缩性、性能、安全性、DevOps和与管理和操作的集成(如表1所示),使用的是开发和操作——简而言之,企业对此该做些什么?
对于1-5级,1是***分,5是***。 指定为1意味着该技术根本不支持该类别,而5则表示该技术满足该类别的大部分功能和功能要求。 我们研究DevOps类别的一个要求是容器子系统支持DevOps操作或提供集成存储库的能力。 对于评估Google,AWS或Azure容器服务的企业,本文提供了一些基础知识。 企业如何应用,将最终将推动您的最终产品发展方向。
集成和数据考虑
Azure容器服务(ACS)基于Apache Mesos,这是一个开源的容器编排系统。 这意味着考虑到ACS之前的功能和功能,可以对ACS的特性和功能做出一些很好的假设。 目前尚不普遍可用的ACS是上述三个容器服务中***的。 随着我们在Microsoft容器产品上提供更多的数据点,将会有很大的变化。
使用AWS EC2容器服务(ECS),我们看到一些操作问题,例如无法以细粒度的级别监控容器。当考虑ECS与管理和运营的集成时,应该与任何AWS产品一样强大,我们必须将其降低到4分,相对于Google容器引擎(GKE)5分。然而,ECS确实包含了CloudWatch集成,与ACS相比,它可以使其更加稳定。此外,此时,ACS仅支持Linux容器。虽然Windows的支持即将到来,随着Microsoft端口Mesos的过去,.NET开发人员现在已经落后于曲线。在数据方面,所有这些服务都提供本机数据连接,而不会强制使用外部API,但还有改进的余地。一个问题是他们将绑定容器与本地数据服务,而不提供开放的数据访问,这增强了可移植性。如果数据与容器紧密耦合,则难以创建便携式容器。这是我们现在关注的一个新兴领域。
AWS,Google和Azure容器安全
在考虑安全性时,我们发现Google的服务通过其Kubernetes容器业务流程系统,具有“秘密”功能和其他两项服务缺乏的额外资源限制。 因此,GKE获得了更高的安全排名。 请记住,Microsoft也使用Kubernetes,但是以不同的方式。 大部分技术本身都是从用户中抽象出来的。
然而,当查看主机平台或容器服务所在的公共云平台时,有趣的是,Google平台在安全性方面,在某些方面不如AWS或Azure。 虽然Google可以使用第三方身份访问管理(IAM)工具,但它缺乏本地IAM支持。 虽然这并没有影响到表中列出的排名,但是随着任何这些平台的前进,这是值得考虑的。
DevOps的可扩展性
对于DevOps,GKE和Amazon ECS现在有自己的注册中心,但是Azure容器服务却没有。Google和AWS在考虑各自云中的容器服务时,提供了更好的DevOps集成。
可扩展性与您的应用程序的需求相关,因此我们根据其提供的机制(如Mesos)以及我们在项目中看到的一些用例做出假设。 当您查看这些技术来托管和执行容器时,您可以使用相同的方法。 例如,使用Mesos的ACS应提供公平的可扩展性,但不如GKE提供更好的集群功能。
众所周知,亚马逊ECS提供优质的可扩展性,主要由AWS为其容器引擎提供的高度可扩展的平台功能驱动。
总而言之,由于Google与其自己的Kubernetes容器集成紧密集成,以及Google的开发和运营支持,Google的产品总体上更为先进。 不过,Google并不是那么远,AWS和微软不能快速赶上。 考虑到AWS在市场上的担心,它可能会在不久的将来提供更好的容器技术。