C2Container Service (ECS)和Kubernetes (K8s) 都解决了同样的问题:跨越主机集群管理容器。ECS和Kubernetes之间的斗争让我想起了vi和Emacs之间的编辑器之战:激烈的讨论集中于技术问题和个人信仰上。接下来的问题将帮助你明智的选择。考虑到问题和答案包含了我的主张——ECS和K8s之间的区别,基于我最近项目上的经验。

它合适吗?

一个容器是一个隔离的元素。但是跨主机集群启动容器只是挑战的一小部分。你的容器在一个由基础设施和服务组成的世界中存在:举几个来说,存储系统,数据库,域名服务。

你打算在哪运行你的容器?

  • Amazon Web Services (AWS)
  • Google Cloud Platform (GCP)
  • 其他IaaS供应商

本地部署

能够整合容器管理解决方案到基础设施中是关键。

ECS在容器和其他AWS服务之间提供最无缝的集成。下面是几个例子:

  • 分配IAM角色给每个容器,允许细粒度访问控制其他服务。
  • 在外部负载均衡器注册容器(应用负载均衡器)。
  • 基于集使用扩展EC2实例(自动伸缩)。
  • 收集日志(监测日志)。

在K8s和AWS之间实现一个类似水平的集成是一个大量的工作。例如,用etcd构建一个生产就绪的关键值存储,需要K8s,需要高可用,加密,和几周的滚动更新。通过负载均衡器和域名系统集成K8s是另一个重大的障碍。

另一方面,K8s提供了与GCP免费的集成。Google Container Engine提供以下内容:

  • 在多个高可用区域之间分布集群。
  • 基于使用扩展集群。
  • 为容器提供持久的磁盘。

K8s在使用Google Container Engine(GKE)时提供了最大的价值,因为它与GCP集成。

如果你正在使用其他IaaS供应商,而不是Amazon和谷歌,或运行在本地部署上,那么K8s是唯一的选择,因为ECS只在AWS上运行。可比较的ECS在AWS上或在K8s在GCP上,在这种情况下,构建一个类似的基础设施将是大量工作。

它和你的架构匹配吗?

ECS和K8s在服务发现上遵循不同的策略。

ECS使用负载均衡器进行服务发现。通过负载均衡器可以访问外部和内部服务。应用程序负载均衡器(ALB)提供路径和基于主机的路由以及内部或外部连接。

K8s使用不同的策略。只有来自集群外部的请求通过负载均衡器。虚拟IP提供对内部服务的访问,而不需要负载均衡器。

如果你的微服务架构严重依赖服务到服务通信,K8s提供较少的通信成本。除此之外,ECS也为微服务体系结构提供了朴素而简单的方法。特别是,如果大部分的服务需要从互联网上进行访问。

谁运营它?

我强烈反对你自己去运营一个容器集群,只要可能。或者,一个自己动手的容器基础设施是否有有价值会增加你的业务?

通过ECS提供的集群管理是一个完成的管理服务,提供高可用,可扩展性和安全。使用ECS没有额外费用,而且它也被AWS支持计划所覆盖。但是,你仍然对由EC2和VPC组成的底层基础设施负责。

Google Container Engine(GKE)也提供管理服务。GKE提供管理K8s集群包括底层基础设施。如果你的集群由超过5个节点组成,Google的管理费用是每月100美元。

它成功了吗?

K8s在Apache许可2.0下获得许可,然而ECS是AWS提供的专有服务。尽管如此,AWS发布了Blox,这是一个开源项目的集合,用于在ECS上进行容器管理和编排。

K8s社区充满活力,产生了许多创新的解决方案。开源生态系统提供了灵活性。但是不要期望除了K8s核心之外的生产解决方案。

厂商锁定一个流行的争论在ECS与K8s讨论中。我认为,ECS和K8s都将你锁定在他们的解决方案中。尽管K8s是开源的,但是谷歌在技术演变和商业化其云平台方面是主要贡献者。

总结

你有在用AWS作为基础设施供应商吗?使用ECS来管理和调度容器,并从高度集成和完全托管的服务中获益。

你是否使用GCP作为基础设施提供商?使用谷歌容器引擎(GKE)提供完全管理的K8s集群,并集成到GCP基础设施中。

你是在本地部署上运行还是使用另一个IaaS提供商?运营K8s集群可能是你唯一的选择。在集成你现有的基础设施,构建一个高可用和伸缩的K8s集群时,预期会有大量的eff。

ECS vs. Kubernetes 类似而又不同的更多相关文章

  1. 阿里云ECS安装Kubernetes问题收集与解答

    问题1 kubernetes pod启动报错open /etc/docker/certs.d/registry.access.redhat.com/redhat-ca.crt: no such fil ...

  2. 用阿里云ecs部署kubernetes/K8S的坑(VIP、slb、flannel、gw模式)

    1 阿里云ecs不支持keepalived vip 1.1 场景描述 本来计划用keepalived配合nginx做VIP漂移,用以反代多台master的apiserver的6443端口,结果部署了v ...

  3. Kubernetes+Federation打造跨多云管理服务

    Kubernetes日渐普及,在公有云.私有云等多个环境中部署kubernetes集群已是常规做法,而随着环境的复杂多样和集群数量增长,如何高效地管理这些集群成为新的问题.于是跨多云管理服务应运而生. ...

  4. Kubernetes的10个基本事实!你知道几个?k8s与Docker又有何不同?

    无论您是Kubernetes的新手还是只是想获得更多知识,这篇文章都会帮到您! Kubernetes是一个增长的趋势.近年来,K8s技术经历了从小型开源Google项目到Cloud Native Co ...

  5. 在Docker中监控Java应用程序的5个方法

    译者注:Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化.通常情况下,监控的主要目的在于:减少宕机 ...

  6. Flink架构,源码及debug

    序 工作中用Flink做批量和流式处理有段时间了,感觉只看Flink文档是对Flink ProgramRuntime的细节描述不是很多, 程序员还是看代码最简单和有效.所以想写点东西,记录一下,如果能 ...

  7. Elasticsearch优化 & filebeat配置文件优化 & logstash格式配置 & grok实践

    Elasticsearch优化 & filebeat配置文件优化 & logstash格式配置 & grok实践 编码转换问题(主要就是中文乱码) (1)input 中的cod ...

  8. 使用dotnet-monitor sidecar模式 dump docker运行的dotnet程序.

    前情概要 随着容器和云技术的发展, 大量的应用运行在云上的容器中, 它们的好处是毋庸置疑的, 例如极大的提高了我们的研发部署速度, 快速的扩缩容等等, 但是也存在一些小小的问题, 例如难以调试. 基于 ...

  9. 像智能手机一样管理云端应用:阿里云联合微软全球首发开放应用模型(OAM)

    2019 年 10 月 17 日上午 9 点 15 分,阿里巴巴合伙人.阿里云智能基础产品事业部总经理蒋江伟在 QCon 上海<基于云架构的研发模式演进>主题演讲中,正式宣布: " ...

随机推荐

  1. MyEclipse中手工添加dtd支持

    1.先下载好相应的dtd文件,如struts-2.3.dtd 2.打开MyEclipse,Window->Preferences 在搜索框中输入"XML Catalog" 3 ...

  2. 并发编程5 操作系统&进程

    一.今日大纲 1.multiprocessing模块简单应用 2.for循环创建进程 3.进程传参方式和创建方式2 4.join方法 5.操作系统基础 二.今日内容 (1)操作系统简单介绍 多道技术: ...

  3. Connecting to Shares And Common Shares

    Now that you have these shares, how do people use them? Assuming that you have a share called Apps o ...

  4. php学习之有用的资源 总结

    1.php之道,http://laravel-china.github.io/php-the-right-way/ 2.改变php变成效率 http://www.php100.com/html/duj ...

  5. for...in循环取Json数据

    var result = { "Tables":{ "B2B_DS_ORDERMX0":{ "ordernum":"tables- ...

  6. 我的Android进阶之旅------&gt;Android无第三方Jar包的源代报错:The current class path entry belongs to container ...的解决方法

    今天使用第三方Jar包afinal.jar时候.想看一下源码,无法看 然后像加入jar相应的源代码包.也无法加入相应的源代码,报错例如以下:The current class path entry b ...

  7. selector模块

    selector selectors模块,此模块允许高级和高效的I / O多路复用,构建在select模块原语上.鼓励用户使用此模块,除非他们需要精确控制所使用的操作系统级原语.( 默认使用epoll ...

  8. centos7 vmware克隆解决网络问题

    centos7克隆后,发现两台机子之间的MAC相同,无法获取IP.超找资料,解决办法如下: 只要删除网卡的配置文件中的HWADDR和UUID两行就行.使用ifup启动网卡即可.

  9. Djngo Rest Framework

    目录: 认证和授权 用户访问次数/频率 版本 解析器 序列化 分页 路由系统 视图 渲染器 一. 什么是Restful REST与技术无关,代表的是一种软件架构风格,REST是Representati ...

  10. PL/SQL编程—游标

    一.游标的相关概念: 定义: 游标它是一个服务器端的存储区,这个区域提供给用户使用,在这个区域里 存储的是用户通过一个查询语句得到的结果集,用户通过控制这个游标区域当中 的指针 来提取游标中的数据,然 ...