Google App Engine Flexible 和 Google Container Engine 之间的区别?

Posted

技术标签:

【中文标题】Google App Engine Flexible 和 Google Container Engine 之间的区别?【英文标题】:Difference between Google App Engine Flexible and Google Container Engine? 【发布时间】:2017-12-07 13:32:11 【问题描述】:

特定于基于 Docker 的部署,这两者之间有什么区别?由于 Google App Engine Flexible 现在也支持基于 Dockerfile 的部署,而且它也是完全托管的服务,因此它似乎比在 Container Engine 上配置 Kubernetes 部署更受欢迎,不是吗?

在哪些用例中更倾向于使用 Google Container Engine 而不是 App Engine Flexible?

【问题讨论】:

【参考方案1】:

它们是不同的东西。 App Engine Flexible 专注于应用程序开发 - 即您有一个应用程序并且您希望由 Google 部署和管理)。另一方面,Kubernetes 更多的是拥有自己的基础设施。显然,您也可以在 Kubernetes 中部署应用程序,但由于它是您“自己的”基础架构,因此您可以直接管理应用程序和应用程序的行为方式(创建服务、创建可扩展性策略、RBAC、安全策略......) .

从这个意义上说,Kubernetes 在您可以实现的目标方面更加灵活。但是,作为开发人员,您可能对基础设施根本不感兴趣,只对您的应用程序工作和扩展感兴趣。对于这种配置文件,App Engine Flexible 更适合。

另一方面,如果想要管理完整的容器基础架构(更多 SRE 配置文件),那么 Kubernetes 适合您。

【讨论】:

与 App Engine 相比,GKE 也更便宜、更灵活。它允许您在同一个集群中运行多个应用程序,而不是按应用程序数量计费。【参考方案2】:

除了Javier's answer 中提到的主要好处之外,使用 Kubernetes 可以使您的应用程序可移植并且独立于底层云平台。如果您想将您的应用程序迁移到 AWS、Azure、本地等。如果您使用 Kubernetes,只需很少的更改即可完成,而如果您使用 App Engine Flex,则需要更多变化。

另一个区别是,如果你想创建许多不同的结构复杂的微服务,Kubernetes 更适合,而不是 App Engine。在 App Engine 中实现微服务架构也不是不可能的。您当然可以使用不同的 yaml 文件,但这些文件不会给您很大的灵活性,并且任何复杂的应用程序最终都需要移植。

此外,如果您想拥有有状态的容器,则无法使用 App Engine Flex 来实现。

Kubernetes 作为一个开源项目,其社区比 App Engine 更加活跃。与 App Engine 相比,Google 更关注 Kubernetes,对 Kubernetes 的更新比 App Engine 更频繁。

但这并不意味着 App Engine 的功能没有那么强大。我曾使用 App Engine(标准环境和灵活环境)为数十万(现在可能有一百万)用户开发复杂的应用程序,我们从未想过将其从 GAE 中迁移出来。我的意思是,如果它可以处理 Pokemon Go 的流量,它当然也可以处理您的应用程序。

有人对性能进行了比较here。汇总结果如下-

服务之间的一个重要区别是 App Engine Flex 将自动化偏向于 Google 的控制,而 Kubernetes Engine 需要客户更多的监督。 Kubernetes 引擎正在发展 速度更快,并且正在增加更强大的自动化。

一个细微的区别是 Flex 使用容器作为达到目的的手段。 通常,Flex 的用户可能会忽略容器正在 因为这是在幕后完成的。 Kubernetes Engine — 顾名思义 — 以容器为谓词,是 明确设计为一种便于管理 从容器构建的服务。使用 Flex,服务始终如一 一种类型的 n 个容器。使用 Kubernetes Engine,服务包括 m-pods 和 pods 本身可能包含 p-containers。

将 App Engine Flex 部署迁移到 GKE 是可行的 在这种情况下(!)Flex 实现了比 GKE 更高的吞吐量。 速度增加是由于 App Engine 的快速性 能够发出自动缩放事件的信号; GKE 迅速扩展 pod 在现有的节点集群中,但扩展速度稍慢 增加节点数。 App Engine 和 GKE 共享基本 GCP 资源,包括 HTTP/S 负载平衡器服务和托管基础架构组自动扩展。 对于相同的负载,使用相同的虚拟机大小(1 个 vCPU 和 1GB RAM):App Engine Flex 在 6 个实例虚拟机(1 个实例/虚拟机)上扩展到 6 个容器; GKE 扩展到 3 个虚拟机上的 10 个 Pod(1 个容器/Pod)(50%)。

【讨论】:

【参考方案3】:

如果您希望 24/7 全天候运行您的应用程序,与 App Engine 相比,GKE 还以更低的价格提供更多的 vCPU 和 RAM 资源。如果您在 Kubernetes 上使用 preemptible VMs 运行应用程序(比普通虚拟机便宜多达 80%),您可以进一步降低运行成本,您的应用程序将在几秒钟的停机时间内重新启动。

GKE 的另一个优势是您可以在同一个集群中运行多个应用程序,而 App Engine 会按每个部署的应用程序收费。

PS:我在 GKE 集群上运行多个站点。在 App Engine 上执行此操作将花费我目前支付的费用几倍。

【讨论】:

【参考方案4】:

除了上面已经解释的内容之外,GKE 和 APP Engine Flexible 都不会缩放到零。但是,GKE 确实提供了 APP Engine Flexible 所不具备的永久性磁盘和 TPU/GPU 访问权限。

【讨论】:

以上是关于Google App Engine Flexible 和 Google Container Engine 之间的区别?的主要内容,如果未能解决你的问题,请参考以下文章

连接 Google App Engine 和 Google Compute Engine

Google App Engine Flexible 和 Google Container Engine 之间的区别?

如何在 Google Cloud App Engine 上使用 PubSub 创建订阅者,该订阅者通过 Publisher 从 Google Cloud App Engine Flex 收听消息?

将 Meteor 部署到 Google App Engine 2017

Google BigQuery 的 Google App Engine 授权

Google App Engine 通过内部网络与 Compute Engine 通信