我最近开始研究GKE。假设我们有一个基本的Web应用程序(后端和前端)
前端通过NGINX LB连接到后端槽,因此,如果需要更多功率,则可以缩放POD,并且LB在节点之间分配负载,并且负载可以完美工作,所以我的问题是,如果您您的容器内是否有数据库?当您扩展Kubernetes集群时,它将为每个节点创建一个数据库,对吗?那样的话会有问题吗?因此,要说这些天如何在市场上使用,我假设您仅将后端放入一个容器中,并使用云提供商的另一项服务来存储数据,以便该服务可以从所有容器中获取请求而且不会出现数据差异。
答案 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上部署数据库的指南。