问题描述
我有一个 GKE 集群,部署了将近 6-7 个微服务。我需要在 GKE 中安装 Postgres DB(而不是 Cloudsql 作为成本)。 当检查不同类型的持久卷时,我可以看到如果多个微服务访问同一个数据库,我应该使用普通磁盘的 NFS 或 PVC 就足够了,而不是本地存储。
征求您对此的看法。
解决方法
一切都取决于您的场景。一般来说,当您考虑要使用哪个 Volume Plugin
时,您应该遵循 AccessMode。
PersistentVolume 可以以资源提供者支持的任何方式挂载到主机上。如下表所示,提供者将具有不同的能力,并且每个 PV 的访问模式被设置为该特定卷支持的特定模式。
在下面的文档中,您将找到具有不同 Volume Plugins
和支持的 Access Modes
的表。
根据您的评论更新,您只有一个节点。通过这种设置,您几乎可以使用所有支持 Volume
的 RWO Access mode
。
ReadWriteOnce -- 卷可以由单个节点以读写方式挂载。
如果要将其用于 1 个以上的节点,则应考虑另外 2 个 Access Modes
。
ReadOnlyMany -- 卷可以被多个节点以只读方式挂载
ReadWriteMany -- 卷可以被多个节点以读写方式挂载
因此,在您的情况下,您可以使用 gcePersistentDisk,因为它支持(ReadWriteOnce
和 ReadOnlyMany
)。
如果您想从多个节点访问此 PV,则使用 NFS
会受益。
NFS 可以支持多个读/写客户端,但特定的 NFS PV 可能会在服务器上以只读方式导出。每个 PV 都有自己的一组访问模式,用于描述该特定 PV 的功能。
另外,如果这是为了学习目的,你也可以勾选Local Persistent Volume。示例可以在 this tutorial 中找到,但它只需要很少的更新,例如 image
或 apiVersion
。