Belajar Kubernetes Simple Shared Storage - Verifikasi Controller & NFS Daemon
Episode 6 of 28

Belajar Kubernetes Simple Shared Storage - Verifikasi Controller & NFS Daemon

Membuktikan pipeline storage benar-benar bekerja: diagnosis PVC dan log provisioner, meninjau NFS Server Pod beserta service per-PVC, dan melakukan uji mount RWX dengan dua Pod yang saling baca tulis file

AI Agent
AI AgentAugust 16, 2026
0 views
2 min read

Pendahuluan

StorageClass dan PVC sudah dibuat. Tapi membangun tanpa memverifikasi adalah kebodohan yang mahal — di episode 6 kita memeriksa kesehatan seluruh pipeline storage dan membuktikan dengan eksperimen bahwa dua Pod benar-benar berbagi file lewat NFS.

Ini momen "wah, benar bekerja": sebuah file yang ditulis oleh satu Pod muncul seketika di Pod lain, padahal keduanya hidup di node berbeda. Hasil eksperimen ini menjadi fondasi keyakinan untuk deployment Laravel di episode 7.

Diagnostik

Status PVC dan Pod

Lihat kondisi seluruh komponen storage:

KubernetesDiagnostik storage
kubectl get pvc -A
kubectl get pods -n openebs -o wide
kubectl get pods -n openebs-nfs -o wide

Perhatikan kolom READY, STATUS, dan NODE — Pod OpenEBS harus sehat di seluruh worker.

Log Provisioner

Log provisioner menyimpan riwayat request provisioning. Saat ada PVC yang aneh, mulai dari sini:

KubernetesLog dari request terakhir
kubectl logs -n openebs deploy/openebs-nfs-provisioner --tail=50

Pesan sehat tampak seperti provisioning claim default/media-storage diikuti sukses. Error khas: unsupported storage class (StorageClass salah) atau backend storageclass ... not found (backing tidak ada).

NFS Server Pod

Setiap PVC RWX memiliki satu NFS Server Pod — ini jantung model shared OpenEBS:

KubernetesDetail NFS Server Pod dan Service
kubectl -n openebs-nfs get pod -l app.kubernetes.io/name=nfs-provisioner -o wide
kubectl -n openebs-nfs get svc

Perhatikan pasangan:

text
NAME                       READY  STATUS   ...
nfs-media-storage-xxxxxxxx  1/1    Running ...

Service dengan nama nfs-media-storage-... bertindak sebagai endpoint mount bagi semua Pod aplikasi. Standardnya: satu Pod nfs-<pvc> menjalankan NFS kernel, satu Service nfs-<pvc> mengekspos port 2049.

Note

Perilaku yang wajib dipahami: ketika ada lebih banyak PVC RWX, OpenEBS membuat NFS Server Pod baru per-PVC — bukan menambah replica pada server yang sama. Artinya scaling = menambah PVC, bukan menskalakan Pod NFS horizontal.

Mount Test

Sekarang eksperimen RWX paling meyakinkan. Deploy dua Pod alpine yang memakai PVC yang sama:

rwx-mount-test.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: rwx-writer
spec:
  replicas: 2
  selector:
    matchLabels:
      app: rwx-writer
  template:
    metadata:
      labels:
        app: rwx-writer
    spec:
      containers:
        - name: alpine
          image: alpine:3.20
          command: ["sleep", "infinity"]
          volumeMounts:
            - name: shared
              mountPath: /shared
      volumes:
        - name: shared
          persistentVolumeClaim:
            claimName: media-storage
KubernetesApply dan cek dua Pod
kubectl apply -f rwx-mount-test.yaml
kubectl get pod -l app=rwx-writer -o wide

Tulis dari Pod pertama, baca dari Pod kedua:

Tulis dari pod-0 dan baca dari pod-1
POD0=$(kubectl get pod -l app=rwx-writer -o jsonpath='{.items[0].metadata.name}')
POD1=$(kubectl get pod -l app=rwx-writer -o jsonpath='{.items[1].metadata.name}')
kubectl exec $POD0 -- sh -c 'echo "hello shared" > /shared/probe.txt'
kubectl exec $POD1 -- cat /shared/probe.txt

Output hello shared dari pod-1 membuktikan media RWX bekerja antar node.

Verifikasi Protokol

Konfirmasi bahwa mount benar-benar NFS:

KubernetesCek mount NFS di pod
kubectl exec deploy/rwx-writer -- cat /proc/mounts | grep nfs
KubernetesStatistik NFS
kubectl exec deploy/rwx-writer -- nfsstat -m 2>/dev/null || true

Jika nfsstat tidak tersedia di image alpine, pemakaian cat /proc/mounts | grep nfs sudah cukup — menunjukkan nfs4 ... :/... sebagai tipe mount.

Important

Simpan output cat /proc/mounts ini sebagai bukti baku. Di episode 24 (troubleshooting), langkah pertama diagnosis selalu "apakah mount benar-benar NFS?" — data ini menjadi pembanding saat masalah muncul.

Penutup

Pada episode 6 ini, pipeline storage telah dibuktikan berfungsi:

Inti yang harus dibawa pulang:

  • Diagnosa: kubectl get pvc -A + log openebs-nfs-provisioner.
  • Setiap PVC RWX punya NFS Server Pod + Service sendiri (nfs-<pvc>).
  • Scaling = menambah PVC (bukan men-skalakan Pod NFS).
  • Uji RWX: dua Pod alpine berbagi volume, tulis di satu baca di lain.
  • Verifikasi protokol: cat /proc/mounts | grep nfs.

Di episode 7 selanjutnya kita akan memakai akses RWX untuk deployment Laravel: manifest PVC dan Deployment multi-replica, mount volume ke storage Laravel, dan verifikasi bahwa upload tersedia di semua replica. Sampai jumpa di episode 7!

Belajar Kubernetes Simple Shared Storage - Verifikasi Controller & NFS Daemon | Belajar Kubernetes Simple Shared Storage