在使用GKE的時候就會思考到儲存空間要怎麼選擇,今天就來介紹幾種選擇。
Container Storage Interface
預設GKE會提供以下幾種CSI,分為PD硬碟與NFS的Filestore,會不同等級收費不同,使用上直接在PVC指定StorageClass,就會自動建立硬碟與Filestore。

透過kubectl get csidriver可以看看目前已經安裝到csi driver。

硬碟
CSI Driver: pd.csi.storage.gke.io
GKE預設提供standard、premium-rwo、standard-rwo這三個StorageClass,速度與價格都是premium-rwo > standard-rwo > standard,而且由於硬碟的特性,三者都只支援ReadWriteOnce,代表只能允許一個硬碟掛載使用,服務使用deployment就沒辦法開多個容器。
價格參考官方說明。

Filestore
CSI Driver: filestore.csi.storage.gke.io
Filestore是Google推出的NFS服務,類似於地端的NetApp,由於是NFS,就可以支援ReadWriteMany,讓多個容器同時掛載,是個快速方便的選擇。
缺點是Filestore價格很貴,有容量低消,最低至少要1TB。換算下來,最便宜的方案一個月也要7000起跳。價格參考官方說明。

Cloud Storage
CSI Driver: gcsfuse.csi.stroage.gke.io
最近Google剛推出GCS FUSE CSI,我也寫了一篇文章介紹並試用,若使用GCS作為儲存空間,就要考慮到檔案的特性是否適合,使用上會較受限制。GCS支援ReadWriteMany可以讓多個容器掛載,價格也比Filestore便宜,算是個不錯的選擇。
價格參考官方說明。

自建NFS伺服器
如果想要使用到硬碟的特性,又想使用ReadWriteMany,可以考慮自行架設NFS伺服器。自建的NFS可以架設在GCE或GKE Standard,不支援GKE Autopilot,再搭配NFS Provisoner使用。
結語
考量到方便性與價格,我會傾向使用Cloud Storage,可以便宜的使用ReadWriteMany,又不需要自建NFS般的麻煩,但還是要依情況而定。