【问题标题】:How to scale a webapp in GCP using Kubernetes如何使用 Kubernetes 在 GCP 中扩展 webapp
【发布时间】:2020-04-06 01:15:54
【问题描述】:

我最近开始关注 GKE。假设我们有一个基本的 Web 应用程序(后端和前端)

前端通过 NGINX LB 连接到后端,因此如果您需要更多功率,您可以扩展 POD,并且 LB 在节点之间分配负载并且它可以完美地工作,所以我的问题是,如果您你的容器里面有数据库吗?当您扩展 Kubernetes 集群时,它会为每个节点创建一个数据库,对吗?那样的话会不会有问题?所以说这些天它是如何在市场上使用的,我假设你只在后端放入一个容器,并使用云提供商的另一个服务来存储数据,这样服务就可以从所有容器中获取请求并且不会有数据差异。

【问题讨论】:

    标签: kubernetes google-cloud-platform google-cloud-storage google-kubernetes-engine


    【解决方案1】:

    你已经回答了自己。大多数人在容器中运行前端和后端,并使用(例如谷歌)Cloud SQL、Datastore 或 BigQuery 来存储数据。

    【讨论】:

      【解决方案2】:

      大多数后端应用程序都依赖数据库来保存状态。所以代码是无状态的,可以在不考虑状态或数据的情况下进行扩展。

      您可以在 kubernetes 上运行数据库。但是有一个很大的“但是”。有必要遵守一些规则,因为豆荚是会死的,这需要进一步管理。

      来自 kubernetes 中数据库的数据必须始终由 pod 将连接到的永久磁盘支持。

      此外,并非所有数据库都对 kubernetes 友好(例如:MySQL、PostgreSQL),在这些情况下,有必要使用 Kubernetes Operators 来包装数据库。

      如果将数据库容器放入 POD 会发生什么? 集群中的每个节点都会同时运行许多不同的 Pod。当您选择 Kubernetes 数据库解决方案时,有必要将数据库容器放在 pod 上。拥有一个带有后端容器和 DB 容器的 pod 并不是一个好方法。

      当您扩展 Kubernetes 集群时,它会为每个节点创建一个数据库? Kubernetes 中的扩展单元是 pod,而不是容器。当负载增加时,集群中的节点数量以及该服务部署的 Pod 总数会增加。

      Google Kubernetes Engine documentation 中介绍了有关此主题的更多信息。在 Kubernetes 上部署数据库的指南可以在 here 找到。

      【讨论】:

      • 因此,换句话说,可以将数据库和后端一起放在同一个容器中,但需要额外的配置工作,因此如果使用 GCP 或云提供商
      • 一些数据库是为运行K8S而设计的,例如Vitess。您也可以只为您的数据库使用一个 POD,并使用垂直 Pod 缩放来根据您的流量增加其上允许的资源。无论如何,K8S 做了很多,但不是全部,你必须管理和维护你的集群/pod。查看完全托管的解决方案并评估它们是否符合您的需求(Cloud Run、Cloud SQL 用于前 2 个)
      • 我已在 会发生什么...? 中更新了我的答案。 @AndréDeLaOCampos,正如您所说,最好的方法是使用数据库产品。它会更简单也足够好。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-23
      • 2022-11-10
      • 1970-01-01
      • 2019-02-26
      • 1970-01-01
      相关资源
      最近更新 更多