博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
容器管理大战:Kubernetes vs.Docker Swarm与Amazon ECS
阅读量:2116 次
发布时间:2019-04-29

本文共 2948 字,大约阅读时间需要 9 分钟。

640?wx_fmt=jpeg

Container Orchestration: 快速入门

640?wx_fmt=png

自20世纪70年代以来,容器技术就已经出现,但直到2013年Docker首次亮相后才开始发挥作用。从那时起,容器已经流行起来;它们正在显著地改变DevOps的布局以及我们构建、运输和运行分布式应用程序的方式。那么,docker的增长和容器的使用是同步发展的,这不是巧合。

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

容器编排工具为跨多个主机协调创建、管理和更新多个容器提供了有用且强大的解决方案。此外,编排允许您在服务和进程任务之间异步共享数据。在生产环境中,可以在多个服务器上运行每个服务的多个实例,以使应用程序具有高度可用性。我们越简化编排,就越能深入应用程序并分解较小的微服务。

这就提出了一个问题,你选择哪种工具来指挥交响乐?

在本文中,我将比较容器编排中的三个主要参与者,以帮助您选择合适的一个。

概要

640?wx_fmt=png

容器编排严重依赖于您的基础设施,这意味着了解这些解决方案如何与您当前的云提供商/内部部署解决方案集成是很重要的。您愿意购买一个云提供商的整个工具链吗?或者你需要更多样化的东西?

Kubernetes凭借其可配置性、可靠性和庞大的社区,正在成为容器编排领域的当前领导者,超越Docker Swarm。Kubernetes是由Google创建的一个开源项目,它与整个Google云平台协调工作。此外,它在几乎所有基础设施上都运行良好。

640?wx_fmt=png

Swarm是Docker自己的编排工具,现在已与Docker engine完全集成,并利用标准API和网络。Swarm模式内置于Docker CLI中,无需额外安装,易于获取新的Swarm命令。部署服务可以像使用“docker service create”命令一样简单。docker swarm通过在性能、灵活性和简单性方面取得进步,以获得重新采用,与kubernetes抗争,争取在人气竞赛中领先。

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

Kubernetes

640?wx_fmt=png

Kubernetes(缩写为k8s或kube)是Google对容器管理的开源解决方案。它可以在多种生产环境中工作,包括裸机、虚拟机、大多数云提供商,以及三者的组合/混合。

集群包括几个主要组件:

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

  • 标签:分配给标识、服务和复制控制器的键值标签(例如名称)。

  • 服务:服务为一组pods命名,充当负载均衡器,将流量引导到正在运行的容器。

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

640?wx_fmt=png

Kubernetes的安装是这三种安装中最复杂的,但是使用正确的工具,安装过程更简单。为了与现有协调系统或裸机环境的集成,Kubeadm工作得很好。helm是一个流行的工具,可简化安装和管理kubernetes应用程序的安装和管理。Kube的一个主要优点是,您可以对其配置进行最终控制,而更常见的平台有大量文档来支持您的定制设置。除此之外,如果遇到任何问题,Kubernetes还可以利用大量的用户和资源来支持Slack、StackOverflow和Github。

Kubernetes的核心功能是能够做任何你想做的事情,尽管与Docker Swarm相比,部署,管理和实现你想要的东西可能更复杂。

Docker Swarm

640?wx_fmt=png

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

Swarm是一组节点,包括:

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

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

  • 服务:服务描述了您希望单个容器如何在您的节点上分布自己。要创建服务,请指定与普通“docker run”中一样的准确信息,以及新参数(即容器副本数量)。

  • 任务:根据Swarm 管理的说法,单个容器将工作放在这些“槽”中。

    640?wx_fmt=png

Swarm非常适合刚开始使用容器或不需要配置每个细节的人。最重要的是,Swarm允许您轻松地将容器缩放到惊人的数量。

Swarm模式安装不需要特别的复杂,因为它已经是Docker engine的一部分。该功能是标准的,从Docker 1.12及更高版本开始。查看Caylent最近在Amazon Web服务上创建高可用性Docker Swarm的博客文章,了解如何轻松设置自己的Swarm。

弹性容器服务(Amazon ECS)

640?wx_fmt=png

Amazon ECS是AWS自己的容器管理服务,它是一个于Docker兼容的服务,允许您在EC2实例上运行容器化应用程序,是Kube和Swarm的替代方案。

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

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

  • 任务定义:JSON格式的文本文件,其中包含与“docker run”命令基本相同的信息。此外,还包括在一台主机上运行哪些容器的详细信息。

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

  • 服务调度器:持续监视正在运行的任务,并确保正确的数字已启动。此外,如果任务失败,该功能会重新安排任务。

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

AmazonECS为那些寻求容器和其他AWS服务之间集成的用户提供了最大的价值。它是一个完全管理的服务,提供高可用性、可扩展性和安全性。除此之外,您的AWS支持计划还将其作为标准包括在内。

另外,如果您已经在AWS上,则不需要安装任何额外的软件来操作集群。

概述

640?wx_fmt=png

最终,选择正确的容器编排工具取决于您的优先级。考虑到您需要什么技术来与之协同工作。

你和AWS有联系吗?如果Google Cloud是您的提供商,那么将ECS用于Kubernetes可能是有意义的,反之亦然。Kubernetes应该是你的首选。(特别是考虑到最近发布的重大公告:2017年发明。EKS是AWS新推出的托管Kubernetes服务,与ECS完全兼容。EKS不仅仅是Kubernetes, 因此应该可以使用现有的工具和应用程序,这为将来在AWS上实现完全托管的解决方案铺平了道路。)

不过,如果你喜欢Docker CLI,并不想用新工具,那就坚持Docker Swarm的简单性。不过,请记住,在2017年,Docker还宣布了即将对Kubernetes的支持。

640?wx_fmt=png

小声讨论...

k8s,docker swam,amazon ecs,你会选择哪一个?640?wx_fmt=jpeg

640?wx_fmt=jpeg

长按二维码 ▲

订阅「架构师小秘圈」公众号

如有启发,帮我点个在看,谢谢↓

转载地址:http://mymef.baihongyu.com/

你可能感兴趣的文章
前端程序员必知的30个Chrome扩展
查看>>
memcached分布式实现原理
查看>>
怎么成为架构师
查看>>
40个重要的HTML 5面试问题及答案
查看>>
在Java中如何高效判断数组中是否包含某个元素
查看>>
设计模式总结
查看>>
什么时候可以使用Ehcache缓存
查看>>
Java核心知识点-JVM结构和工作方式
查看>>
Java编程中“为了性能”一些尽量做到的地方
查看>>
Java并发编程:线程池的使用
查看>>
redis单机及其集群的搭建
查看>>
Java多线程学习
查看>>
检查Linux服务器性能
查看>>
Java 8新的时间日期库
查看>>
Chrome开发者工具
查看>>
Java工程师成神之路
查看>>
如何在 Linux 上自动设置 JAVA_HOME 环境变量
查看>>
MSSQL复习笔记
查看>>
Spring基础知识汇总
查看>>
Chrome扩展插件
查看>>