怎样选择性价比高的容器云平台是什么?

容器化和微服务是当前最热话题,不久之前,笔者(据说因为现在都不用笔了,“笔者”的称谓已经不合适了,因为输入用键盘,叫“键人”更为合适)参加QCon上海一个微服务监控的Session,场面爆棚,我不得不在拥挤的过道听完了整个session。随着要管理的容器越来越多,容器的集群管理平台成为了刚需!

Docker Swarm提供API 和CLI来在管理运行Docker的集群,它的功能和使用本地的Docker并没有本质的区别。但是可以通过增加Node带来和好的扩展性。理论上,你可以通过增加节点(Node)的方式拥有一个无限大的Docker主机。

Swarm并不提供UI,需要UI的话,可以安装UCP,不过很不幸,这个UCP是收费的。

Swarm的集群协调和业务发现可以支持不同的第三方组件,包括:

如果对集群协调的概念不熟悉,可以参考我的另一篇博客《使用Python进行分布式系统协调 (ZooKeeper,Consul, etcd )》

Swarm的基本容器调度策略有三种:

spread 容器尽可能分布在不同的节点上
binpack 容器尽可能分布在同一个节点上
random 容器分布在随机的节点上

Swarm集群的高可用配置很容易,以下图为例:

Docker Swarm的特点是配置和架构都很简单,使用Docker原生的API,可以很好的融合Docker的生态系统。

Kubernetes是Google开发的一套开源的容器应用管理系统,用于管理应用的部署,维护和扩张。利用Kubernetes能方便地管理跨机器运行容器化的应用。Kubernetes也是用Go语言开发的,在github上可以找到源代码。

Kubernetes 源于谷歌公司的内部容器管理系统Borg,经过了多年的生产环境的历炼,所以功能非常强大。 以集群的方式运行、管理跨机器的容器。
解决Docker跨机器容器之间的通讯问题。
Kubernetes的自我修复机制使得容器集群总是运行在用户期望的状态。
支持跨云平台(IaaS)的部署

为了支持这些功能,Kubernetes做了做了很多的抽象概念,所以,刚开始使用Kubernetes,需要学习不少的新概念,包括:

以上是一些核心概念,除了这些,Kubernetes还提供其它一些概念,来支持应用程序的运维,包括:

Label 对系统中的对象通过Label的方式来管理
Namespace 对对象,资源分组,可以用于支持多租户

总之,功能强大,系统概念繁多,比较复杂。

Scheduler收集和分析当前Kubernetes集群中所有Minion节点的资源(内存、CPU)负载情况,然后依此分发新建的Pod到Kubernetes集群中可用的节点。由于一旦Minion节点的资源被分配给Pod,那这些资源就不能再分配给其他Pod, 除非这些Pod被删除或者退出, 因此,Kubernetes需要分析集群中所有Minion的资源使用情况,保证分发的工作负载不会超出当前该Minion节点的可用资源范围
etcd 负责集群的协调和服务发现 特点

Kubernetes提供了很多应用级别的管理能力,包括高可用可高扩展,当然为了支持这些功能,它的架构和概念都比较复杂,当然我觉得为了获得这些功能,值!

Mesos是为软件定义数据中心而生的操作系统,跨数据中心的资源在这个系统中被统一管理。Mesos的初衷并非管理容器,只是随着容器的发展,Mesos加入了容器的功能。Mesos可以把不同机器的计算资源统一管理,就像同一个操作系统,用于运行分布式应用程序。

Mesos的起源于Google的数据中心资源管理系统Borg。你可以从WIRED杂志的这篇文章中了解更多关于Borg起源的信息及它对Mesos影响。

Mesos的主要功能包括: 提供API进行应用的扩展

下图是Mesos的管理界面:

Mesos的基本架构如下 Master负责资源的统一协调和Slave的管理。Master协调全部的Slave,并确定每个节点的可用资源,聚合计算跨节点的所有可用资源的报告,然后向注册到Master的Framework(作为Master的客户端)发出资源邀约。Mesos实现了两级调度架构,它可以管理多种类型的应用程序。第一级调度是Master的守护进程,管理Mesos集群中所有节点上运行的Slave守护进程。集群由物理服务器或虚拟服务器组成,用于运行应用程序的任务,比如Hadoop和MPI作业。第二级调度由被称作Framework的“组件”组成。
Framework可以根据应用程序的需求,选择接受或拒绝来自master的资源邀约。一旦接受邀约,Master即协调Framework和Slave,调度参与节点上任务,并在容器中执行,以使多种类型的任务

Mesos相比Kubernetes和Swarm更为成熟,但是Mesos主要要解决的是操作系统级别的抽象,并非为了容器专门设计,如果用户出了容器之外,还要集成其它的应用,例如Hadoop,Spark,Kafka等,Mesos更为合适。Mesos是一个更重量级的集群管理平台,功能更丰富,当然很多功能要基于各种Framework。 Mesos的扩展性非常好,最大支持50000节点,如果对扩展性要求非常高的话么,Mesos是最佳选择。

ECS (Amazon EC2 Container Service )是亚马逊开发出的高度可扩展的高性能容器集群服务。在托管的 Amazon EC2 实例集群上轻松运行容器应用和服务。他最大的好处就是在云上,不需要自己管理数据中心的机器和网络。

ECS继承了AWS服务的高扩展和高可用性,安全也可以得到保证。

在基本容器管理的基础上,ECS使用Task和Service的概念来管理应用。

Task类似Docker Compose,使用一个JSON描述要运行的应用。Service是更高一层的抽象,包含多个task的运行实例,通过修改task实例的数量,可以控制服务的伸缩。同时Service可以保证指定数量的Task在运行,当出现错误的时候,重启失败的Task

下图是ECS的架构图:

使用EC2,ELB,安全组等大家熟悉的AWS的概念,AWS用户可以轻松管理你的容器集群。并且不需要付初基本资源以外的费用。

我们并不清楚ECS的调度策略,但是AWS提供了一个例子,如果继承第三方的调度策略。

通过Cloud Watch Log,我们可以很方便的对整个集群进行监控。

如果你是一个AWS的重度用户,ECS是个不错的选择,因为你可以是把你的容器集群运行在AWS的云上,管理起来非常方便。

这里对几个平台做一个简单的比较:


Docker原生的集群管理工具
开源的容器集群工具,提供应用级别的部署,维护和扩张功能
基于数据中心的操作系统
基于云的高可用,高扩展容器集群

四个平台,Swarm是最轻量级的,功能也最简单,适于有大量Docker实例环境的用户。Kubernetes增加了很多应用级别的功能,适用于快速应用的部署和维护。Mesos最重,适用于已经有了相当的应用和容器混合的环境。ECS则推荐给AWS的用户或者不希望自己管理数据中心的云用户。

  【PConline 资讯】如今如果没有提及容器,就很难谈论云计算。随着云计算中容器的普及,更多的组织选择不考虑采用外部的容器。

  虽然容器已经存在了一段时间,但Docker最近帮助他们成为企业使用的焦点。随着云计算的发展,越来越多的企业看到采用混合和多云模型的好处,但确保软件在从一个环境转移到另一个环境时可靠运行是所面临的一个挑战。容器已经通过将应用程序及其所有组件包装到一个更便携的软件包来解决问题。  

  而且,随着云计算中容器的日益普及,包括亚马逊网络服务(AWS),Azure和谷歌公司在内的主要云计算提供商提供容器服务和业务流程工具来管理容器创建和部署。  

  因此,无论技术新手还是经验丰富的专家,都需要了解与云中容器相关的这些关键术语,下面就让我们熟知下容器的这些关键术语:  

  应用程序容器化:容器化(也称为基于容器的虚拟化)是一种分布式应用程序部署模型,可为每个应用程序启动虚拟机提供替代方案。隔离环境称为容器,而是在单个控制主机上运行,并共享相同的操作系统内核。与传统的虚拟化相比,容器化可以提高内存,CPU和存储的效率。

  因为组织可以创建容器的速度比基于虚拟机管理程序的实例创建得更快,容器也会鼓励更灵活的环境,促进持续交付方法以及使用微服务器。  

  容器即服务(CaaS):云计算服务提供商(如AWS,Azure和Google)提供基于容器的虚拟化即服务,为容器化应用程序提供协调,管理和计算资源。这种称为CaaS的模型通常由基于Linux的操作系统,容器运行时,容器编排工具和容器注册表组成。  

  Docker容器:Docker是一个开源平台,可以将Linux应用程序部署为容器。 Docker容器可以在多个位置运行,包括虚拟机,裸机服务器和公共云实例。主要云计算提供商(包括AWS,Azure和Google)都支持Docker容器。  

  Amazon EC2容器服务(ECS):Amazon ECS是一种容器管理服务,支持Docker容器并在受管理的Amazon EC2实例集群上运行应用程序。用户通过一组API创建和管理Docker容器。该服务评估和监视CPU使用情况,并支持自己的开源调度程序,AWS Blox以及第三方调度程序。用户还可以通过API调用访问其他Amazon EC2功能,例如弹性负载平衡,安全组,身份和访问管理角色。 Amazon EC2容器注册表与Amazon ECS集成,用于管理,存储和部署Docker容器图像。

  Google Kubernetes:Kubernetes是Google的公共云,私有云和混合云的容器管理系统。开源系统管理Docker和Rocket容器的部署和扩展,并且还具有编排和负载平衡工具的工具。像他们支持Docker一样,AWS,Google和Azure支持Kubernetes系统。开发人员可以通过云平台移动Kubernetes容器工作负载,而无需更改代码。

  Azure容器服务(ACS):ACS是基于Apache Mesos的开放源代码管理系统,可以管理云计算中的容器队列。该服务支持DC / OS,Docker Swarm和Kubernetes扩展和编排。由于编排层中的开源组件,应用程序完全可移植。  

  开放容器运动(OCI):OCI是一个为容器建立共同标准的合作项目。该项目由Linux Foundation承办,独立于商业机构。目前,OCI有两个规格:运行时规范和图像规范。 OCI成员包括AWS,Google,Microsoft和IBM等供应商。

专业文档是百度文库认证用户/机构上传的专业性文档,文库VIP用户或购买专业文档下载特权礼包的其他会员用户可用专业文档下载特权免费下载专业文档。只要带有以下“专业文档”标识的文档便是该类文档。

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取,非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档。

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取,非会员用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档。

付费文档是百度文库认证用户/机构上传的专业性文档,需要文库用户支付人民币获取,具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档。

共享文档是百度文库用户免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定。只要带有以下“共享文档”标识的文档便是该类文档。

我要回帖

更多关于 容器云平台 的文章

 

随机推荐