在 GKE 中将 Postgres 安装为 NFS,并部署了多个微服务

问题描述

我有一个 GKE 集群,部署了将近 6-7 个微服务。我需要在 GKE 中安装 Postgres DB(而不是 Cloudsql 作为成本)。 当检查不同类型的持久卷时,我可以看到如果多个微服务访问同一个数据库,我应该使用普通磁盘的 NFS 或 PVC 就足够了,而不是本地存储

征求您对此的看法。

解决方法

一切都取决于您的场景。一般来说,当您考虑要使用哪个 Volume Plugin 时,您应该遵循 AccessMode

PersistentVolume 可以以资源提供者支持的任何方式挂载到主机上。如下表所示,提供者将具有不同的能力,并且每个 PV 的访问模式被设置为该特定卷支持的特定模式。

在下面的文档中,您将找到具有不同 Volume Plugins 和支持的 Access Modes 的表。

根据您的评论更新,您只有一个节点。通过这种设置,您几乎可以使用所有支持 VolumeRWO Access mode

ReadWriteOnce -- 卷可以由单个节点以读写方式挂载。

如果要将其用于 1 个以上的节点,则应考虑另外 2 个 Access Modes

ReadOnlyMany -- 卷可以被多个节点以只读方式挂载

ReadWriteMany -- 卷可以被多个节点以读写方式挂载

因此,在您的情况下,您可以使用 gcePersistentDisk,因为它支持(ReadWriteOnceReadOnlyMany)。

如果您想从多个节点访问此 PV,则使用 NFS 会受益。

NFS 可以支持多个读/写客户端,但特定的 NFS PV 可能会在服务器上以只读方式导出。每个 PV 都有自己的一组访问模式,用于描述该特定 PV 的功能。

另外,如果这是为了学习目的,你也可以勾选Local Persistent Volume。示例可以在 this tutorial 中找到,但它只需要很少的更新,例如 imageapiVersion