Google Cloud has moved Filestore Enterprise Multishares for Google Kubernetes Engine (GKE) into general availability. With Filestore Enterprise Multishares, multiple persistent volumes can be packed onto a Filestore Enterprise instance to improve storage utilization and reduce costs.
Filestore Enterprise provides a fully managed, regional network-attached storage (NAS) system for GKE. Storage is fully decoupled from the host and does not require additional infrastructure operations to attach or detach volumes. Volumes can be simultaneously read to and written by hundreds to thousands of containers.
When combined with the GKE Filestore Container Storage Interface (CSI) driver, Filestore Multishares can allocate up to ten shares across a single Filestore Enterprise instance. Each share maps to a unique Persistent Volume (PV) in GKE. PVs can be provisioned from 100 GiB to 1 TiB. When storage is requested via the Kubernetes Persistent Volume Claim (PVC), the GKE Filestore CSI driver will bin pack the volume requests onto the Filestore Enterprise instance.
If the application exceeds ten PVCs, the GKE Filestore CSI driver will automatically create more Filestore instances. Creating a new Filestore share of PV can take some time. For faster PV creation the StorageClass YAML file should be modified to include volumeBindingMode: Immediate
.
PVCs can be manually expanded as well. For example, editing the PVC share for replica 0 can be done via:
$ kubectl edit pvc test-pvc-multishare-web-0
The file will open in the command line. Update the value of the spec.resources.requests.storage field and update the value to 500Gi
and save. The change can be seen via:
$ kubectl get pvc test-pvc-multishare-web-0
Which should show something similar to:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
test-pvc-multishare-web-0 Bound pvc-7aa21b5a-5343-4547-b7d7-414c16af15a7 500Gi RWX enterprise-multishare-rwx 28m
When a PV is deleted, the GKE Filestore CSI driver will reclaim the storage and remove the share. The driver will also delete the Filestore instance if all shares have been removed. Support for upscaling PV capacity is also supported with near-zero downtime. Note that some PV delete operations may take time to complete. During that time, create or expansion operations of PVCs for the same storage class may be blocked. Snapshots are currently not supported with Filestore Multishares. A single share Filestore StorageClass can be used to manually create snapshots through the Filestore API.
Saikat Roychowdhury, senior software engineer at Google, and Akshay Ram, product manager at Google, warn of a few considerations in using this tool. As the underlying Filestore is shared, there is a risk of a noisy neighbor consuming an excessive amount of IOPS and throughput. They do recommend that PVCs share the same trust boundary so if stronger isolation is needed then Filestore single-share instances should be used.
To access the Filestore Multishares feature, the GKE Filestore CSI driver must be enabled at version 1.23 or later. Note that this feature is limited to the Filestore Enterprise service tier. More details about Filestore Multishare can be found on the Google Cloud website.