2026-07-18
OpenShift Storage - Persistent Volume (PV) dan Persistent Volume Claim (PVC)
Aplikasi tidak mengakses storage secara langsung. Pod hanya menggunakan PVC, kemudian PVC akan terhubung ke PV yang menyediakan kapasitas penyimpanan.
Static Provisioning vs Dynamic Provisioning
OpenShift menyediakan dua metode untuk menyediakan storage persisten.
| Static Provisioning | Dynamic Provisioning |
|---|---|
| Administrator membuat PV secara manual. | PV dibuat otomatis ketika PVC dibuat. |
| Harus menentukan backend storage. | Backend storage dikelola oleh StorageClass. |
| Cocok untuk NFS atau storage legacy. | Direkomendasikan untuk cluster modern. |
Static Provisioning (Contoh NFS)
Pada metode ini administrator membuat Persistent Volume terlebih dahulu. Informasi seperti alamat NFS Server, export path, kapasitas, dan access mode ditentukan secara manual.
Persistent Volume (PV)
apiVersion: v1
kind: PersistentVolume
metadata:
name: test-pv
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteMany
storageClassName: nfs
nfs:
server: 192.168.168.120
path: /NFS/nfsshare/data
claimRef:
namespace: test
name: test-pvc Deploy PV.
oc apply -f pv.yaml Persistent Volume Claim (PVC)
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: test-pvc
spec:
storageClassName: nfs
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
volumeName: test-pv Deploy PVC.
oc apply -f pvc.yaml Mengapa Menggunakan volumeName?
Parameter volumeName digunakan agar PVC melakukan binding ke
Persistent Volume tertentu. Dengan demikian Kubernetes tidak akan memilih PV
lain yang memiliki spesifikasi serupa.
Mengapa Menggunakan claimRef?
claimRef bersifat opsional, namun sering digunakan untuk
melakukan reservasi PV agar hanya dapat digunakan oleh PVC tertentu.
Dynamic Provisioning (Menggunakan StorageClass)
Pada cluster modern, administrator biasanya hanya menyediakan StorageClass. Ketika PVC dibuat, Kubernetes atau OpenShift akan membuat Persistent Volume secara otomatis melalui CSI Driver atau provisioner yang sesuai.
Dengan metode ini administrator tidak perlu lagi membuat PV secara manual.
Persistent Volume Claim (PVC)
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: test-pvc
spec:
storageClassName: ocs-storagecluster-cephfs
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi Deploy PVC.
oc apply -f pvc.yaml Setelah PVC dibuat, OpenShift akan secara otomatis membuat Persistent Volume dan melakukan proses binding tanpa intervensi administrator.
Mengapa Tidak Ada Konfigurasi NFS?
Pada Dynamic Provisioning, informasi backend storage sudah dikelola oleh StorageClass dan CSI Driver. Oleh karena itu konfigurasi berikut tidak lagi diperlukan.
nfs:
server: 192.168.168.120
path: /NFS/nfsshare/data
Administrator cukup menentukan storageClassName, sedangkan CSI
Driver akan membuat volume sesuai konfigurasi StorageClass tersebut.
Mengapa Tidak Menggunakan volumeName?
Pada Dynamic Provisioning, Persistent Volume belum ada saat PVC dibuat.
Karena PV akan dibuat secara otomatis, parameter
volumeName tidak perlu ditentukan.
Melihat StorageClass yang Tersedia
oc get sc Contoh output:
NAME PROVISIONER
ocs-storagecluster-cephfs (*) openshift-storage.cephfs.csi.ceph.com
ocs-storagecluster-ceph-rbd openshift-storage.rbd.csi.ceph.com
thin-csi csi.vsphere.vmware.com
nfs nfs.csi.k8s.io
Tanda (*) menunjukkan Default StorageClass yang akan digunakan
apabila PVC tidak menentukan storageClassName.
Verifikasi Binding
Setelah PV maupun PVC dibuat, pastikan statusnya sudah Bound.
oc get pv
oc get pvc
Jika status masih Pending, biasanya terdapat ketidaksesuaian
antara kapasitas, access mode, atau StorageClass yang digunakan.
Best Practice
- Gunakan Dynamic Provisioning jika cluster sudah memiliki CSI Driver.
- Gunakan Static Provisioning hanya jika backend storage belum mendukung provisioning otomatis.
- Pastikan
accessModessesuai dengan kemampuan storage backend. - Gunakan StorageClass bawaan cluster untuk mempermudah pengelolaan storage.
- Selalu verifikasi status PV dan PVC setelah proses deployment.
Kesimpulan
Persistent Volume menyediakan media penyimpanan, sedangkan Persistent Volume Claim merupakan permintaan storage yang digunakan oleh Pod. Pada cluster modern, Dynamic Provisioning menggunakan StorageClass menjadi pilihan utama karena proses pembuatan Persistent Volume dilakukan secara otomatis oleh CSI Driver. Sementara itu, Static Provisioning masih relevan digunakan pada lingkungan yang menggunakan backend storage seperti NFS atau sistem legacy yang belum mendukung provisioning otomatis.