如何使用Kubernetes在GCP中扩展Webapp

时间:2019-12-12 15:37:48

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

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

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

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

大多数后端应用程序都依赖DB来保存状态。因此,该代码是无状态的,可以在不进一步考虑状态或数据的情况下进行缩放。

您可以在kubernetes上运行数据库。但是有一个很大的“但是”。必须遵循一些规则,因为吊舱是致命的,这需要进一步的管理。

kubernetes中来自DB的数据必须始终由Pod将连接到的永久磁盘备份。

此外,并非所有数据库都支持kubernetes(例如MySQL,PostgreSQL),因此在这种情况下有必要使用Kubernetes运算符包装数据库。

如果将数据库容器放在POD中会怎样? 集群中的每个节点将同时运行许多不同的Pod。当您使用Kubernetes DB解决方案时,有必要将一个DB容器放在一个容器上。在后端容器和数据库容器中放置一个容器不是一个好方法。

扩展Kubernetes集群时,它将为每个节点创建一个数据库吗? Kubernetes中的缩放单位是容器,而不是容器。当负载增加时,该服务的群集中的节点数和已部署的Pod总数将增加。

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