特稿 >

行业洞察 >

拥抱容器,你选好管理方式了吗?

拥抱容器,你选好管理方式了吗?

才云Caicloud 丨 行业洞察

20167
871

2017-03-17

赵逸禅

Xtecher特稿作者

关注

根据451 Research,2016年,容器技术市场产生了7.62亿美元的收入。到2020年,分析公司预测,容器的年度收入将达到27亿美元,复合年增长率为40%


容器市场大好,但是我们面临两个问题:如何确保这些容器的安全性?以及如何部署管理它们?


想要解决问题。首先,我们需要建立——


容器策略:您希望在哪里运用容器?每个CPU 应分配多少个?所有这些问题,都可以通过设置正确的容器策略进行回答。


互操作性:当然,他们应该与您现有的IT 管理工具协同运作。


OK,在有了明确的需求之后,我们就可以对目前主流的容器编排工具——Kubernetes、Mesosphere Marathon 和Docker Swarm 进行进一步筛选,他们都可以在不改变原有架构的情况下对容器进行编排管理。


Docker Swarm


如果你刚开始接触容器,最初了解到的应该是Docker,作为很多人的入门级容器,它吸引了大量的用户。而Swarm 是Docker 本地的编排工具,算得上是Docker 本地的集群管理器。


Docker Swarm 在2016年6月(1.12)版本中将其功能整合到完整的Docker 应用程序中,并花了大量的精力来解决启动和运行。虽然几个新产品有启动问题,比如服务发现程序(例如Consul 或CoreOSetcd)是在Docker Swarm 启动之前运行。Sysadmins 发现这个问题很难解决,即使解决这些启动问题,也还是需要花费大量的精力部署Swarm。


所以,即便新的Docker Swarm 努力获取用户,但目前它仍然落后于Mesosphere 的中央操作系统(DC / OS)和Kubernetes,但是谁能保证以后不发生变化呢?毕竟新改进的Docker Swarm 确实在部署的便利性上有了提升。我之前跟几个DevOps 谈过,他们认为,与Kubernetes 或Mesos 集群相比,Docker Swarm 是一个快进版本。


所以,如果你已经是一个有经验的Docker 用户,Swarm 的学习曲线对你来说就很容易。Docker Native Orchestration 使用单节点Docker 概念,并将它们扩展到Swarm。但一旦你有在运行的Docker 节点,Swarm 的设置就十分繁琐。例如,您可以使用单个shell 命令将Docker 实例添加到Swarm 集群。更新的Swarm 还支持滚动更新,包括节点之间的传输层安全加密,以及简单的负载平衡和相对容易的服务抽象。


目前,Swarm 还有改进的余地。例如,它当前不支持运行状况检查和自动回滚。Swarm 用户也抱怨很多实现问题。例如,Swarm 不能正确支持多主机容器网络等。


Docker Swarm 是内置在Docker 中的,这应该是它最大的吸引力。不过,潜在用户应该注意的是,它就是一个运行的工作,而不是一个立马能解决您容器部署和管理问题的解决方案。


Mesosphere Marathon


Marathon 是一个用于Mesosphere DC / OS 和Apache Mesos 的容器编排平台。DC / OS 是基于Mesos 分布式系统内核的分布式操作系统。Mesos 也是一个开源集群管理系统。Marathon(通过其合作伙伴计划,Chronos,容错作业调度程序)提供有状态应用程序和基于容器的无状态应用程序之间的管理集成。


Marathon 的出现实际上早于容器。Mesosphere 联合创始人和首席技术官Tobias Knaup 在最近的一次采访中解释说,“Marathon 从一开始就被设计为一个通用的工作负载管理器,甚至在Docker 出名之前。他们的目标是建立一个桥梁,连通旧世界到新世界,使现有的应用程序可以部署和扩展,不需要进行太大的变化。“在Knaup 看来,无论它是不是一个现代应用程序架构(如微服务或更传统的三层企业应用程序),至少它非常适合长时间运行。


Marathon 有一个用户界面,您可以将其视为一个应用程序,它可以看作一个框架来管理容器。这涉及DevOps 的开发人员方面,因为容器通过REST API 与Marathon 一起工作。


Marathon 具有许多功能,包括高可用性,服务发现和负载平衡。如果在DC / OS 上运行它,您的应用程序也会获得虚拟IP 路由。


作为一个更成熟的项目,Marathon 没有Docker Swarm 的初期问题。另一方面,Marathon 有一个更陡峭的学习曲线。由于Marathon 只能在带有Mesos 的软件堆栈上运行,这增加了另一层的复杂性。最后,一些功能(例如身份验证)仅适用于DC / OS 上的Marathon。这为你的堆栈又增加了一个抽象层。


Kubernetes


Kubernetes(也就是K8S),起源于Borg。(开源之前,Kubernetes 的名字叫做“项目7”,是Borg 的友好版本)。


Google 在创建Kubernetes 中的作用并不令人感到惊异。很久以前Docker 使得容器流行起来,Google 的很多项目——搜索、Gmail、Google 文档都使用了容器技术。Borg,以及和它的开源的继承者Kubernetes,管理着数十亿个容器。


Kubernetes 自推出以来,就被移植到Azure,DC / OS 以及几乎所有叫得出名字的云平台。唯一的例外是Amazon WebServices(AWS)。即使在那里,CoreOS 也让用户在AWS 上部署Kubernetes 集群。


Kubernetes 有巨大的供应商支持。今天,Kubernetes 由Linux 基金会托管。此外,还有来自众多公司的Kubernetes 发行版,包括Red Hat OpenShift,Canonical 公司的Kubernetes 发行版,CoreOS Tectonic 以及英特尔和Mirantis。


为什么?除了证明自身在Google 的大型数据中心,Kubernetes 拥有自我修复,自动化推出和回滚和存储编排。功能列表还在继续更新。简而言之,无论你想用你的容器做什么,Kubernetes 都可以对它进行管理。


互操作性也是Kubernetes 一个巨大的亮点。Sam Ghods 是基础架构即服务(IaaS)云提供商Box 的联合创始人,他称赞Kubernetes,他说:“我可以编写一个JSON 规范,并将其提交给任何地方运行的任何Kubernetes 集群,还能够重新创建正确的拓扑和完全正确的我需要的基础设施。”


Kubernetes 的另一个优点是“对每朵云的友好性,”软件工程师Erez Rabih 说,“你可以在AWS,GoogleCloud,Microsoft 的Azure、Rackspace 上运行你的集群。”事实上,Kubernetes 开发人员的短期目标是使你能够运行Docker 容器,由Kubernetes 管理,同时在多个云架构上使用群集联盟。


当然,Kubernetes 并不是完美的。首先,它有两个问题。第一,负载平衡很困难。到最后,Kubernetes 的进入将使得Kubernetes 从内部运行到外部的负载均衡器变得容易,但这还是一个在逐步改进的工作。第二,Kubernetes 擅长自动修复问题。但它运行非常好,并且可以快速地对容器进行重启,以至于你不会注意到你的容器崩溃。当然,为了解决这个问题,您需要添加一个集中式日志系统。


最后,这三种容器管理工具都与多个云平台配合使用,包括OpenStack、Magnum 和Azure 容器服务。


好了!在这么多分析之后,问题来了,哪一个平台最适合你呢?


Kubernetes 的首席工程师Brendan Burns 显然坚持自己的偏爱,但他总结了这些容器管理系统之间的差异:“Mesos 和Kubernetes 主要旨在解决运行集群应用程序的类似问题; 他们有不同的发展历史和不同的方法来解决这个问题。Mesos 的集中力量在通用调度,插入多个不同的调度器。“


相比之下,Burns 说,”Kubernetes 的设计理念是,构建分布式应用程序的环境。它包括用于复制和服务发现作为核心原理,而这是通过Mesos 中的框架添加的。Swarm 是Docker 努力扩展现有的Docker API,使一群机器看起来像一个单一的Docker API。


从支持视图和功能列表比较来看,赢家显然是Kubernetes。在AWS 和Docker 之外,所有人都支持它。


幸运的是,您可以混合和匹配这些程序,满足您公司需求。三者之间可以很好地进行协同工作。这不容易,但它是可行的——也许这也是探索三者之间哪个更适合你的最佳方式。


但是,和往常一样,最佳选择取决于您的具体需求。例如,如果你的公司有工作人员精通Docker,可以选择运行在Docker Swarm 上。因为假如它运行得很好,那为什么还要切换到另一个系统?况且Docker 一直都会被使用。Marathon 有它的优势,为你提供一种方式(虽然是多层次的方式)来处理你的容器和你的旧应用程序。


我无法给你一容易的“这才是真正的方式”的答案。你要逐一检查它们,来找出哪个容器管理工具或工具满足自己的需要。


我可以告诉你,如果你搬到容器,你肯定会需要这些程序。你也不想浪费你的时间来构建自己的容器管理工具的吧。


所以,选择哪个呢?Good luck!


原文:https://insights.hpe.com/articles/the-basics-explaining-kubernetes-mesosphere-and-docker-swarm-1702.html

打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

账号登录

重置密码

还没有账号?立即注册>

账号注册

已有账号?立即登录>注册企业会员

重置密码

返回

绑定手机