容器管理大战:Kubernetes vs.Docker Swarm与Amazon ECS

Container Orchestration: 快速入门
自20世纪70年代以来,容器技术就已经出现,但直到2013年Docker首次亮相后才开始发挥作用。从那时起,容器已经流行起来;它们正在显著地改变DevOps的布局以及我们构建、运输和运行分布式应用程序的方式。那么,docker的增长和容器的使用是同步发展的,这不是巧合。
然而,运行一个容器就像一个单独的乐器,单独演奏它的交响乐乐谱。容器编排允许你,指挥,通过管理和塑造整个合奏的声音来统一管弦乐队。
容器编排工具为跨多个主机协调创建、管理和更新多个容器提供了有用且强大的解决方案。此外,编排允许您在服务和进程任务之间异步共享数据。在生产环境中,可以在多个服务器上运行每个服务的多个实例,以使应用程序具有高度可用性。我们越简化编排,就越能深入应用程序并分解较小的微服务。
这就提出了一个问题,你选择哪种工具来指挥交响乐?
在本文中,我将比较容器编排中的三个主要参与者,以帮助您选择合适的一个。
概要
容器编排严重依赖于您的基础设施,这意味着了解这些解决方案如何与您当前的云提供商/内部部署解决方案集成是很重要的。您愿意购买一个云提供商的整个工具链吗?或者你需要更多样化的东西?
Kubernetes凭借其可配置性、可靠性和庞大的社区,正在成为容器编排领域的当前领导者,超越Docker Swarm。Kubernetes是由Google创建的一个开源项目,它与整个Google云平台协调工作。此外,它在几乎所有基础设施上都运行良好。

Swarm是Docker自己的编排工具,现在已与Docker engine完全集成,并利用标准API和网络。Swarm模式内置于Docker CLI中,无需额外安装,易于获取新的Swarm命令。部署服务可以像使用“docker service create”命令一样简单。docker swarm通过在性能、灵活性和简单性方面取得进步,以获得重新采用,与kubernetes抗争,争取在人气竞赛中领先。
AmazonElasticContainerService(ECS)是Amazon的专有容器调度程序,旨在与其他AWS服务协调工作。这意味着以AWS为中心的解决方案(如监视、负载平衡和存储)可以轻松地集成到您的服务中。如果您正在使用Amazon的替代云提供商,或者您在本地运行您的工作负载,那么ECS可能不适合。
Kubernetes
Kubernetes(缩写为k8s或kube)是Google对容器管理的开源解决方案。它可以在多种生产环境中工作,包括裸机、虚拟机、大多数云提供商,以及三者的组合/混合。
集群包括几个主要组件:
  • pods:在同一节点上一起创建、调度和部署的一个或多个容器组。
  • 标签:分配给标识、服务和复制控制器的键值标签(例如名称)。
  • 服务:服务为一组pods命名,充当负载均衡器,将流量引导到正在运行的容器。
  • 复制控制器:一个框架,负责确保在任何给定时间安排和运行特定数量的POD复制副本。

Kubernetes的安装是这三种安装中最复杂的,但是使用正确的工具,安装过程更简单。为了与现有协调系统或裸机环境的集成,Kubeadm工作得很好。helm是一个流行的工具,可简化安装和管理kubernetes应用程序的安装和管理。Kube的一个主要优点是,您可以对其配置进行最终控制,而更常见的平台有大量文档来支持您的定制设置。除此之外,如果遇到任何问题,Kubernetes还可以利用大量的用户和资源来支持Slack、StackOverflow和Github。
Kubernetes的核心功能是能够做任何你想做的事情,尽管与Docker Swarm相比,部署,管理和实现你想要的东西可能更复杂。
Docker Swarm
Docker Swarm扩展了单主机Docker,允许开发人员快速轻松地部署多个容器和微服务。在这三种工具中,它是最轻量级和最容易转换的工具,因为它已经内置到Docker engine中。
Swarm是一组节点,包括:
  • 管理节点:控制编排、集群管理和任务分配。
  • 工作节点:工作人员的唯一目的是运行由管理节点分配的容器和服务。
  • 服务:服务描述了您希望单个容器如何在您的节点上分布自己。要创建服务,请指定与普通“docker run”中一样的准确信息,以及新参数(即容器副本数量)。
  • 任务:根据Swarm 管理的说法,单个容器将工作放在这些“槽”中。
Swarm非常适合刚开始使用容器或不需要配置每个细节的人。最重要的是,Swarm允许您轻松地将容器缩放到惊人的数量。
Swarm模式安装不需要特别的复杂,因为它已经是Docker engine的一部分。该功能是标准的,从Docker 1.12及更高版本开始。查看Caylent最近在Amazon Web服务上创建高可用性Docker Swarm的博客文章,了解如何轻松设置自己的Swarm。
弹性容器服务(Amazon ECS)
Amazon ECS是AWS自己的容器管理服务,它是一个于Docker兼容的服务,允许您在EC2实例上运行容器化应用程序,是Kube和Swarm的替代方案。
虽然Docker以其简单性赢得了所有人的青睐,但AmazonECS是一个相对复杂的工具,因为您必须学习一个全新的平台。ECS内的组件包括:
  • ECS集群:运行任务的ec2实例组。
  • 任务定义:JSON格式的文本文件,其中包含与“docker run”命令基本相同的信息。此外,还包括在一台主机上运行哪些容器的详细信息。
  • 服务:在集群中运行和维护指定数量的任务定义实例的工具。
  • 服务调度器:持续监视正在运行的任务,并确保正确的数字已启动。此外,如果任务失败,该功能会重新安排任务。
  • 容器代理:此功能允许您将集群实例连接到容器。
AmazonECS为那些寻求容器和其他AWS服务之间集成的用户提供了最大的价值。它是一个完全管理的服务,提供高可用性、可扩展性和安全性。除此之外,您的AWS支持计划还将其作为标准包括在内。
另外,如果您已经在AWS上,则不需要安装任何额外的软件来操作集群。
概述
最终,选择正确的容器编排工具取决于您的优先级。考虑到您需要什么技术来与之协同工作。
你和AWS有联系吗?如果Google Cloud是您的提供商,那么将ECS用于Kubernetes可能是有意义的,反之亦然。Kubernetes应该是你的首选。(特别是考虑到最近发布的重大公告:2017年发明。EKS是AWS新推出的托管Kubernetes服务,与ECS完全兼容。EKS不仅仅是Kubernetes, 因此应该可以使用现有的工具和应用程序,这为将来在AWS上实现完全托管的解决方案铺平了道路。)
不过,如果你喜欢Docker CLI,并不想用新工具,那就坚持Docker Swarm的简单性。不过,请记住,在2017年,Docker还宣布了即将对Kubernetes的支持。
本站所有文章均由网友分享,仅用于参考学习用,请勿直接转载,如有侵权,请联系网站客服删除相关文章。若由于商用引起版权纠纷,一切责任均由使用者承担
极客文库 » 容器管理大战:Kubernetes vs.Docker Swarm与Amazon ECS

Leave a Reply

欢迎加入「极客文库」,成为原创作者从这里开始!

立即加入 了解更多