三大容器编排平台,谁才是你的理想选择?

5,347 阅读6分钟
原文链接: mp.weixin.qq.com

简介

原始的容器技术一直存在,但直到2013年Docker首次亮相才开始出现。从运行分布式应用程序开始。那么,Docker的增长和容器使用正在同步发展并非巧合。

然而,运行一个容器就像一个单独的乐器,单独播放它的交响乐乐谱。容器编排允许指挥家通过管理和塑造整个乐团的声音来统一管弦乐队。

容器编排工具提供了有用且功能强大的解决方案,用于跨多个主机协调创建,管理和更新多个容器。最重要的是,业务流程允许你异步地在服务和流程任务之间共享数据。在生产环境中,你可以在多个服务器上运行每个服务的多个实例,以使应用程序具有高可用性。我们越简化编排,我们就可以深入了解应用程序并分解更小的微服务。这就提出了一个问题,你选择使用哪种工具来指挥你的交响乐?在本文中,我将比较容器编排中的三个主要参与者,以帮助你选择!

概述

容器编排在很大程度上依赖于你的基础架构,这意味着了解这些解决方案如何与你当前的云提供商/内部部署解决方案集成非常重要。你是否愿意购买云提供商的整个工具链,或者是否需要更多样化的东西?

Kubernetes正在成为容器编排领域的领导者,由于其可配置性,可靠性和大型社区的支持,从而超越了Docker Swarm。Kubernetes由Google创建,作为一个开源项目,与整个Google云平台协调工作。此外,它几乎适用于任何基础设施。

Swarm是Docker自己的编排工具,现在与Docker Engine完全集成,并使用标准API和网络。Swarm模式内置于Docker CLI中,无需额外安装,并且易于获取新的Swarm命令。部署服务可以像使用docker service create命令一样简单。Docker Swarm正在与Kubernetes竞争,通过在性能,灵活性和简单性方面取得进步来获得采用。

Amazon Elastic Container Service(ECS)是亚马逊专有的容器调度程序,旨在与其他AWS服务协调工作。这意味着以AWS为中心的解决方案(如监控,负载均衡和存储)可轻松集成到你的服务中。如果你正在使用亚马逊之外的云提供商,或者如果在本地运行工作负载,那么ECS可能不合适。

Kubernetes

Kubernetes(缩写为K8s或Kube)是Google对容器管理的开源解决方案。它适用于多种生产环境,包括裸机,内部部署虚拟机,大多数云提供商,以及三者的组合/混合。

集群包括几个主要组件:

Pod:在同一节点上一起创建,调度和部署的一个或多个容器的组。

标签:分配用于标识窗格,服务和复制控制器的键值标签(即名称)。

服务:服务为一组pod提供名称,充当负载均衡以将流量定向到正在运行的容器。

复制控制器(Replication controllers):一个框架,负责确保在任何给定时间安排和运行特定数量的pod复制副本。

Kubernetes安装是所有三个中最复杂的,但使用正确的工具可以简化过程。为了与现有的编排系统或裸机环境集成,kubeadm很适合。Helm是一种流行的工具,可简化Kubernetes应用程序的安装和管理。K8s的主要优势之一是你可以对其配置进行最终控制,而更常见的平台拥有大量文档来支持你的定制设置。最重要的是,如果你遇到任何问题,Kubernetes拥有庞大的用户和资源社区,可以获得来自Slack,StackOverflow和GitHub的支持。

Docker Swarm

Docker Swarm扩展了单主机Docker,允许开发人员快速,轻松地部署多个容器和微服务。在这三个工具中,它是最轻量级和最容易过渡的工具,因为它已经内置在Docker Engine中。

Swarms是一组节点,包括:

管理节点:控制编排,集群管理和任务分配。

工作线程节点:工作线程的唯一目的是运行由管理器节点分配的容器和服务。

服务:服务描述了你希望单个容器如何在节点之间分发自身。要创建服务,请指定普通docker运行中的确切信息,以及新参数(例如容器副本数)。

任务:单个容器根据Swarm管理器在这些“slots”中放置的工作线程。

Swarm非常适合那些刚开始使用容器或者不需要配置每个细节的人。最重要的是,Swarm允许你轻松地将容器扩展到一定规模。

Swarm Mode安装不需要特别的工作,因为它已经是Docker Engine的一部分。该功能标配从Docker 1.12及更高版本开始。

弹性容器服务(Amazon ECS)

AWS自己的容器管理服务Amazon ECS是一种与Docker兼容的服务,允许你在EC2实例上运行容器化应用程序,并且是K8S和Swarm的替代方案。

虽然Docker以其简洁性赢得了所有人的青睐,但Amazon ECS是一个相对复杂的工具,因为你必须学习一个全新的平台。ECS内的组件包括:

ECS集群:运行任务的EC2实例组。

任务定义:JSON格式的文本文件,其中包含与docker run命令相同的信息,以及包含哪些容器应在一台主机上运行的详细信息。

服务:用于在集群中运行和维护指定数量的任务定义实例的工具。

服务调度程序:密切关注正在运行的任务,并确保正确的任务已启动,以及功能重新安排的任务(如果失败)。

容器代理:此功能允许你将集群实例连接到容器。

Amazon ECS为那些希望在容器和其他AWS服务之间实现无缝集成的用户提供价值。它是一种完全托管的服务,可提供高可用性,可伸缩性和安全性。最重要的是,你的AWS支持计划将其作为标准包含在内。

总结

最终,选择正确的容器编排工具可归结为你的优先事项。考虑到你需要与之合作的技术。你是否与AWS绑定?如果Google Cloud是你的提供商,那么将ECS用于Kubernetes可能是有意义的,反之亦然。你是否最热衷于可配置性,并且你是否愿意为复杂的服务而努力? Kubernetes应该是你的首选平台。

end