Docker Swarm
Docker Swarm扩展了单主机的Docker模式,它允许开发人员快速、方便地部署多个容器与微服务。由于已被内置于Docker Engine之中,因此它是三种工具中最轻量级、且最容易转换的工具。
Swarm的集群包括如下重要组件:
•Managernodes:用于控制编排、集群管理和任务分配。
•Workernodes:其唯一的功能就是运行由Manager Node所分配的容器和服务。
•Services:描述了您希望单个容器将如何在不同节点之间分发。如果您想创建服务,请在普通Docker运行时指定确切的信息,再添加好新的参数(如:容器的副本数量)。
•Tasks:是Swarm的基本单位。Manager Node根据在服务描述中设置的副本数量把任务分配该Worker Nodes。一旦一个任务被分配给了某个节点,它就不能被移到其他节点上。
Swarm适用于刚开始接触容器、以及不需要去逐个配置细节的用户。另外,Swarm还能让您方便地扩展出大量的容器。
由于已被内置于Docker Engine之中,Swarm Mode并不需要被额外地进行安装。Docker 1.12及其更高版本都具有此功能。
Amazon Elastic ContainerService(ECS)
Amazon ECS是AWS自创的容器管理服务,也是一项兼容Docker的服务。它能让您在EC2的实例上运行容器化的应用,因此它是Kube和Swarm的一种替代方案。
虽然Docker本身非常简单,但是亚马逊的ECS却是一种比较复杂的工具,因此您必须去学习整个全新的平台。ECS包含有如下组件:
•ECSclusters:是运行各项任务的EC2实例组。
•Taskdefinition:是一份JSON格式的文本文件,其中包含Docker的运行命令,以及应该在哪一台主机上运行哪些容器的细节。
•Service:是用于在整个集群上运行和维护指定数量的、各种任务定义实例的工具。
•Servicescheduler:能够持续监控运行的任务,以确保具有合理的在线服务数量,并能在任何失败出现时重新安排任务的上线。
•Containeragents:此功能可以帮助您将各个集群的实例与容器相连接。
Amazon ECS最大程度地方便了不同的容器,与AWS的其他服务之间的无缝集成。它是一种能够提供高可用性、可伸缩性和安全性的完全托管服务。而且AWS的标准支持计划本身就已经将ECS包含在内了。
综述
可见,如何选择适当的容器编排工具,完全取决于您需求的侧重点,同时也要兼顾您所需要协同使用的技术。如果您的应用与AWS密切相关,那么选用ECS肯定会比Kubernetes更合理。反之,如果您使用Google云作为提供商,而且热衷于各种配置,并愿意为完美的服务付出复杂性和精力的话,那么Kubernetes一定是您的首选。
【原标题】Container Wars: Kubernetes vs.Docker Swarm vs. Amazon ECS (作者:Julia Pearson)
原文链接:https://dzone.com/articles/container-wars-kubernetes-vs-docker-swarm-vs-amazo-1