专栏名称: 分布式实验室
最专业的Docker文章,最权威的Docker新闻。关注容器生态圈的发展。
目录
相关文章推荐
51好读  ›  专栏  ›  分布式实验室

ECS vs Kubernetes:相似但是不同

分布式实验室  · 公众号  · 后端  · 2017-08-03 07:47

正文

ECS容器服务(EC2)和Kubernetes(K8s)解决了同样的问题:管理跨主机集群的容器。ECS和Kubernetes之间的容器管理服务竞争,让我想起了vi和Emacs之间的编辑器之争:热烈的讨论集中于技术价值和个人信仰,以下问题将有助于你作出明智的选择。根据我最近的项目经验,问题和答案包含了我对ECS和Kubernetes之间差异的看法。



如何适配容器与基础设施


容器是一个隔离元件。在一组主机上,启动容器只是挑战的一小部分。容器位于由存储系统、数据库、域名服务等基础架构和服务组成的空间内。我们可以在哪里运行容器?


  • 亚马逊网络服务(AWS)

  • 谷歌云平台(GCP)

  • 其他IaaS服务供应商

  • 私有云


把容器管理解决方案集成到你的基础设施中是关键。ECS提供了容器和其他AWS服务之间无缝的集成,下面是开箱即用的几个例子:


  • 将IAM角色分配给每个容器,允许它们对其他AWS服务精细的访问控制

  • 在外部负载均衡器上注册容器

  • 基于集群扩展(自动缩放)EC2实例

  • 收集日志(CloudWatch日志)


集成K8s和AWS需要很多工作:使用具有高可用性、加密、滚动更新功能的K8s,需要花费几个星期。而且,K8s与负载均衡器、域名系统的集成也是一个问题。


另一方面,Kubernetes与谷歌云平台(GCP)无缝集成。谷歌云平台(GCP)提供以下服务:


  • 在多个区域之间,分配工作负载到集群,实现服务高可用性。

  • 根据使用情况调整集群。

  • 为容器提供持久化存储。


因为与谷歌云平台(GCP)无缝集成,Kubernetes与Google容器管理引擎(GKE)一起使用,将发挥最大效益。除了AWS和GCP之外,如果你选择其他IaaS服务供应商,或者在私有云中运行工作负载,Kubernetes会提供如AWS ECS一样的服务。但是,上述使用方式会需要更多的工作量。


与你的基础架构匹配

ECS和Kubernetes遵循不同的服务发现策略。


ECS使用负载均衡器实现服务发现,内部和外部服务都需要通过负载均衡器访问。与内外部服务一样,应用程序负载均衡器(ALB)提供基于主机路由的连接。


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


如果你的微服务架构很依赖于内部服务之间的通信,Kubernetes会减少通信开销。如果你的服务需要从外部互联网访问,ECS也为微服务架构提供了简单的方法。


如何运维


我反对你自己操作容器集群。如果有必要的话,请你思考容器基础设施是否增加了重要的业务价值?


ECS提供的集群管理是一种完全管理的服务,它包括高可用性、可扩展性和安全性。但你需要对由EC2和VPC组成的基础设施负责。使用ECS不需要额外的费用,并且你的AWS支持计划也包含在内。


Google容器管理引擎(GKE)也提供容器集群管理服务。GKE提供了一个受管理的Kubernetes集群,包括底层基础设施。如果你的集群由五个以上的主机节点组成,那么Google每月会收取100美元的管理费用。


是否付费


Kubernetes是根据Apache 2.0许可证授权的开源软件,而ECS是AWS提供的专有服务。尽管如此,AWS还公布了Blox,这是容器管理和ECS协调开发的结果。


Kubernetes社区充满活力,创造了许多创新的解决方案,这使得K8s的开源生态更具有灵活性。但是,除了Kubernetes核心之外,你不要指望生产环境的解决方案。


供应商锁定是ECS和K8s的一个受争议话题。无论使用ECS或Kubernetes,你都会被云服务供应商锁定。即便开放了源码,Google依然对Kubernetes的云平台发展和盈利感兴趣。


总结


你是否将AWS作为基础设施供应商,使用ECS管理和编排你的容器,并从高度集成和完全管理的服务中受益?


你是否将GCP作为基础设施供应商,使用Google容器管理引擎(GKE)完全管理的Kubernetes集群?


你是否使用其他IaaS服务供应商或者在私有云中运行你的工作负载?与现有基础架构集成高可用、可扩展的集群时,Kubernetes是一个好的选择。


原文链接:https://dzone.com/articles/ecs-vs-kubernetes-similar-but-different


烧脑式基于Docker的CI/CD实战训练营


本次培训围绕基于Docker的CI/CD实战展开,具体内容包括:持续集成与持续交付(CI/CD)概览;持续集成系统介绍;客户端与服务端的 CI/CD 实践;开发流程中引入 CI、CD;Gitlab 和 CI、CD 工具;Gitlab CI、Drone 的使用以及实践经验分享等。点击识别下方二维码加微信好友了解具体培训内容



点击阅读原文链接即可报名。