manifest.conf — profile: platform-engineer
← kembali ke catatan

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 accessModes sesuai 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.