Installing Postgres in GKE as NFS with multiple micro-services deployed

12/26/2020

I have a GKE cluster, with almost 6-7 micro-services deployed. I need a Postgres DB to be installed inside GKE (not Cloudsql as cost). When checked the different types of persistent volumes i can see that if multiple micro-service accessing the same DB, should i go using NFS or PVC with normal disk would be enough not anyway local storage.

Request your thought on this.

-- Jithin Kumar S
gke-networking
google-kubernetes-engine
kubernetes
volume

1 Answer

12/29/2020

Everything depends from your scenario. In general you should follow AccessMode when you are considering which Volume Plugin you want to use.

A PersistentVolume can be mounted on a host in any way supported by the resource provider. As shown in the table below, providers will have different capabilities and each PV's access modes are set to the specific modes supported by that particular volume.

In this documentation below, you will find table with different Volume Plugins and supported Access Modes.

According to update form your comment, you have only one node. With that setup, you can use almost every Volume which supports RWO Access mode.

ReadWriteOnce -- the volume can be mounted as read-write by a single node.

There are 2 other Access Modes which should be consider if would like to use it for more than 1 node.

ReadOnlyMany -- the volume can be mounted read-only by many nodes

ReadWriteMany -- the volume can be mounted as read-write by many nodes

So in your case you can use gcePersistentDisk as it supports (ReadWriteOnce and ReadOnlyMany).

Using NFS would benefit if you would like to access this PV from many nodes.

NFS can support multiple read/write clients, but a specific NFS PV might be exported on the server as read-only. Each PV gets its own set of access modes describing that specific PV's capabilities.

Just as addition, if this is for learning puropse, you can also check Local Persistent Volume. Example can be found in this tutorial, however it would require few updates like image or apiVersion.

-- PjoterS
Source: StackOverflow