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. The Thinking of AutomaticTest(有关自动化测试的思考)

    考虑因素: 容易维护 简洁易懂 代码重用性好 系统的稳定性强 UI自动化:   数据的获取:装载的数据文件类型.数据的形式.数据的解析方法定义. 1.利用Junit单元测试组织用例,明确输入数据.预期 ...

  2. python之django直接执行sql语句

    python之django直接执行sql语句 sql = 'select * from stu' info = 模型类.objects.raw(sql)

  3. 巨蟒python全栈开发数据库攻略6:索引2&重要内容汇总

    1.索引的添加和删除 2.正确命中索引举例,explain优化神奇的简单使用 3.联合索引 4.简述慢日志记录 5.用户创建和权限分配 6.mysqldump逻辑备份,浅谈主从复制和读写分离 7.浅谈 ...

  4. maven安装,maven命令行使用

    1 下载maven,解压(无需安装),配置环境变量,命令行mvn -v测试. 2 maven常用命令:https://www.cnblogs.com/wkrbky/p/6352188.html 3 注 ...

  5. PBR工作流

    目标是让substance效果和unity效果一致 分2步: 1.完成1个shader,效果和standard完全一致,抛去不需要的功能 2.使用新的shader,在substance里替代原有的渲染 ...

  6. sp_who 查看数据库连接数

    create table #TempTable(spid int,ecid int,statusvarchar(32),loginname varchar(32),hostname varchar(3 ...

  7. django自带过滤器大全

    1.可以通过过滤器来修改变量的显示,过滤器的形式是:{{ variable | filter }},管道符号'|'代表使用过滤器 2.过滤器能够采用链式的方式使用,例如:{{ text | escap ...

  8. 同一TextView上内容的不同显示(最新)-SpannableString

    上次发了一篇同一TextView内容的不同显示这篇文章. 有关颜色的不同显示,我使用了最简单可是也最复杂的方法.忘记使用SpannableString,现又一次发一下,大家參考下. TextView组 ...

  9. 初识Locust---认识

    性 能测试工具: 基于Python的性能测试工具-locust 现在性能测试方面有很多测试工具,比如我们熟悉的loadrunner.jmeter.ab等,用过的也就是这几种,如果是学过这些工具的可能对 ...

  10. 002-主流区块链技术特点及Hyperledger Fabric V0.6版本特点

    一.主流区块链技术特点 二.HyperLedger子项目 三.Hyperledger fabric架构 V0.6逻辑架构: V0.6区块链网络 对应的0.6版本的运行时架构: 0.6版本的架构特点是: ...