【问题标题】:How do docker containers scale in Google App Engine?docker 容器如何在 Google App Engine 中扩展?
【发布时间】:2019-09-16 13:49:18
【问题描述】:

Google App Engine flexible 允许您部署 docker 容器...扩展如何体现自身?

  • 每次应用程序需要扩展时都会启动新的 VM,还是可以在现有 VM 上启动新的容器实例?

  • 单个容器可以相互独立扩展吗?例如产品容器在负载下,但客户不是,所以只有一个新的产品容器旋转起来?

我意识到 GKE 将是扩展容器的更好选择,但出于多种原因,我需要了解它在 GAE 上的工作原理。

【问题讨论】:

    标签: docker google-app-engine google-cloud-platform docker-compose


    【解决方案1】:
    • App Engine flex 每个虚拟机实例只会运行一个应用容器。如果它需要扩展,它总是会创建一个新的虚拟机来运行新的容器。
    • 根据您的示例,如果您想分别扩展“产品”和“客户”容器,则需要将它们定义为单独的 App Engine 服务。每个服务都有自己的扩展设置并独立运行。

    【讨论】:

      【解决方案2】:

      如果您有容器,您可以查看Cloud Run,它可以扩展为 0,并且可以非常快速地扩展(没有新的 VM 可供提供,这在 AppEngine Flex 上可能需要几秒钟的时间)。

      但是,不支持长时间运行(限制为 15 分钟)。一切都取决于您对功能、可移植性、可扩展性的要求。

      如果您需要更多建议,请提供更多详细信息。

      【讨论】:

        【解决方案3】:

        Google App Engine 是一个fully managed serverless platform,您基本上在其中提交代码,GAE 将管理底层基础架构和运行时环境(例如 python 解释器的版本)。您还可以使用 Dockerfile 自定义运行时环境。

        相比之下,GKE 可对您的集群基础架构提供更细粒度的控制。您可以配置您的计算机资源、网络、安全性、服务的公开方式、自定义扩展策略等。GKE 可以被视为一个托管的容器编排平台。
        可以提供更多控制的 GKE 替代方案是在 GCE 中创建您需要的资源并自行配置 Kubernetes。

        GKE 和 GAE 均基于计算引擎实例并定价。但是,Google Cloud Functions 是更新的 event-driven serverless service。如果您想在事件驱动的基础上执行代码(例如,在用户注册后发送确认电子邮件),GCF 非常适合。

        就复杂性和对代码环境的控制而言,我会将不同的 Google 服务排序为:
        GCE(Compute Engine) > GKE(Kubernetes Engine) > GAE(App Engine) > GCF(Cloud Functions)

        需要考虑的一点是,您越低级,就越容易将您的服务迁移到另一个平台。 鉴于您似乎只部署了容器化应用程序,我建议您尝试一下 GKE,特别是如果您希望拥有一个包含多个相互交互的服务的集群。

        在扩展方面,GAE 将仅扩展 VM 实例,并且每个 VM 实例只有一个应用程序。
        在 GKE 中,您有两种类型的扩展:容器扩展和虚拟机实例扩展。您可以在一个实例中拥有多个容器,这些容器可以是不同的应用程序。根据您定义的限制(例如应用程序中使用的 CPU),GKE 将尝试在您的集群实例之间有效地分配容器。

        【讨论】:

          猜你喜欢
          • 2013-11-02
          • 2011-05-15
          • 2019-02-09
          • 2020-08-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多