ECS vs Kubernetes:相似但是不同


【编者的话】在云计算2.0时代,我们该如何管理大规模的容器应用?ECS和Kubernetes为我们提供了解决方案。本文讨论了容器与基础设施集成、使用公有云的费用等问题,详细内容请浏览下文。

【3 天烧脑式基于Docker的CI/CD实战训练营 | 北京站】本次培训围绕基于Docker的CI/CD实战展开,具体内容包括:持续集成与持续交付(CI/CD)概览;持续集成系统介绍;客户端与服务端的 CI/CD 实践;开发流程中引入 CI、CD;Gitlab 和 CI、CD 工具;Gitlab CI、Drone 的使用以及实践经验分享等。

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

如何适配容器与基础设施

容器是一个隔离元件。在一组主机上,启动容器只是挑战的一小部分。容器位于由存储系统、数据库、域名服务等基础架构和服务组成的空间内。我们可以在哪里运行容器?
  • 亚马逊网络服务(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)完全管理的K8s集群?

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

原文链接:ECS vs. Kubernetes: Similar, but Different(翻译:Jack Yue)

译者介绍: Jack,开源软件研究者,研究方向是容器技术和深度学习,目前积极活跃于DockOne、Kubernetes、Tensorflow技术社区。

0 个评论

要回复文章请先登录注册