Google App Engine Flexible和Google Container Engine的区别是什么?

37
针对基于Docker的部署,这两者有哪些区别?由于Google App Engine Flexible现在也支持基于Dockerfile的部署并且是完全托管的服务,似乎相比配置Container Engine上的Kubernetes部署,它更受欢迎,不是吗?
在什么情况下更适合使用Google Container Engine而不是App Engine Flexible?
4个回答

47

它们是不同的东西。App Engine Flexible专注于应用程序开发 - 也就是说,你有一个应用程序并希望由Google部署和管理。另一方面,Kubernetes更多地关注拥有自己的基础设施。显然,您也可以在Kubernetes中部署应用程序,但由于它是您“自己”的基础设施,所以您需要直接管理如何使两者以及应用程序行为(创建服务、创建可扩展性策略、RBAC、安全策略等)。

从这个意义上说,Kubernetes更灵活,您可以实现更多。但是,作为开发人员,您可能根本不关心基础架构,只想确保您的应用程序能够正常工作和扩展。对于这种类型的用户,App Engine Flexible更适合。

如果您希望管理完整的容器基础架构(更适合SRE配置文件),那么Kubernetes就是您的选择。


2
GKE相比App Engine也更便宜和灵活。它允许您在同一集群中运行多个应用程序,而不是按应用程序数量计费。 - williamli

22
除了Javier的回答提到的内容外,使用Kubernetes的主要好处是使您的应用程序具有可移植性且独立于底层云平台。如果您想将应用程序移动到AWS、Azure、本地等,只需要进行很少的更改即可使用Kubernetes,而如果您正在使用App Engine Flex,则需要进行更多的更改。
另一个区别是,如果您想创建许多不同的具有复杂结构的微服务,Kubernetes比App Engine更适合。在App Engine中实现微服务架构并非不可能。您肯定可以使用不同的yaml文件,但这些文件不会给您带来很大的灵活性,任何复杂的应用程序最终都需要被移植。
此外,如果您想拥有有状态的容器,则无法在App Engine Flex中实现。
由于Kubernetes是一个开源项目,因此拥有比App Engine更强大的社区支持。Google对Kubernetes的关注度比App Engine更高,并且Kubernetes的更新频率比App Engine更高。

但这并不意味着App Engine就不强大了。我曾经使用过App Engine(标准和灵活环境)开发过复杂应用程序,为数十万(现在可能是百万级别)的用户提供服务,我们从来没有考虑过将其迁移出GAE。我的意思是,如果它可以处理Pokemon Go的流量,那么它肯定也能处理您的应用程序。

性能方面,有人在这里进行了比较。总结结果如下 -

两种服务之间的一个重要差异是,App Engine Flex更加偏向于Google的自动化控制,而Kubernetes Engine则需要客户更多的监督。Kubernetes Engine正在快速发展,并添加了更强大的自动化功能。

一个微妙的区别是,Flex使用容器作为手段。通常,Flex的用户可以忽略容器被使用的事实,因为这是在幕后完成的。Kubernetes Engine - 顾名思义 - 基于容器,并明确设计为一种工具,以便于管理基于容器构建的服务。对于Flex,一个服务始终是相同类型的n个容器。对于Kubernetes Engine,一个服务由m个pod组成,而这些pod本身可能包含p个容器。

  • 将App Engine Flex部署迁移到GKE是可行的
  • 在这种情况下,Flex比GKE实现了更大的吞吐量。
  • 增加的速度似乎是由App Engine能够快速发出自动扩展事件的快速性所致;GKE会在现有节点集群内迅速缩放pod,但稍微慢一些来扩展节点数。
  • App Engine和GKE共享基本的GCP资源,包括HTTP/S负载均衡器服务和管理基础设施组自动扩展。
  • 对于相同的负载,使用相同的VM大小(1 vCPU和1GB RAM):App Engine Flex在6个实例VM上(每个VM 1个实例)扩展为6个容器;GKE在3个VM(50%)上扩展为10个Pod(每个Pod 1个容器)。

7
如果您希望应用程序可以全天候运行,与 App Engine 相比,GKE 提供更多的 vCPU 和 RAM 资源,价格更低。如果您使用 可抢占式 VM(比普通 VM 便宜高达 80%)运行应用程序,则可以进一步降低运行成本,在 Kubernetes 上,您的应用程序将在数秒内重新启动,停机时间很短。
GKE 的另一个优点是,您可以在同一集群中运行多个应用程序,而 App Engine 则按部署的应用程序收费。
PS:我在 GKE 集群上运行多个站点。如果在 App Engine 上这样做,我的成本将比目前支付的成本高几倍。

0
除了上面已经解释的内容之外,GKE和APP Engine Flexible都不能实现零缩放。但是,GKE配备了持久磁盘和TPU/GPU访问功能,而这些功能在APP Engine Flexible中不可用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接