ECS容器服务(EC2)和Kubernetes(K8s)解决了同样的问题:管理跨主机集群的容器。ECS和Kubernetes之间的容器管理服务竞争,让我想起了vi和Emacs之间的编辑器之争:热烈的讨论集中于技术价值和个人信仰,以下问题将有助于你作出明智的选择。根据我最近的项目经验,问题和答案包含了我对ECS和Kubernetes之间差异的看法。容器是一个隔离元件。在一组主机上,启动容器只是挑战的一小部分。容器位于由存储系统、数据库、域名服务等基础架构和服务组成的空间内。我们可以在哪里运行容器?
亚马逊网络服务(AWS)
谷歌云平台(GCP)
其他IaaS服务供应商
私有云
把容器管理解决方案集成到你的基础设施中是关键。ECS提供了容器和其他AWS服务之间无缝的集成,下面是开箱即用的几个例子:
集成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 的使用以及实践经验分享等。点击识别下方二维码加微信好友了解具体培训内容。