Skip to main content

Persistent Volume menggunakan Longhorn

Install longhorn

kubectl create ns longhorn-system
kubectl -n longhorn-system apply -f https://raw.githubusercontent.com/longhorn/longhorn/v1.5.3/deploy/prerequisite/longhorn-iscsi-installation.yaml
kubectl -n longhorn-system apply -f https://raw.githubusercontent.com/longhorn/longhorn/v1.5.3/deploy/prerequisite/longhorn-nfs-installation.yaml
kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/v1.5.3/deploy/longhorn.yaml

ubah type service longhorn menjadi nodeport

kubectl -n longhorn-system patch svc longhorn-frontend -p '{"spec": {"type": "NodePort"}}'

lihat port dari service tersebut

kubectl -n longhorn-system get svc

image.png

Akses ui longhorn

image.png

Buat PVC dengan nama myapp-pvc.yaml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
 name: myapp-pvc
spec:
 accessModes:
   - ReadWriteMany
 resources:
   requests:
     storage: 1Gi
 storageClassName: longhorn

lalu apply pvc tersebut.

kubectl -n testing-myapp apply -f myapp-pvc.yaml

setelah itu mount pvc tersebut ke pod

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
  labels:
    name: my-app
spec:
  replicas: 3
  selector:
    matchLabels:
      name: my-app
  template:
    metadata:
      name: my-app
      labels:
        name: my-app
    spec:
      volumes:
      - name: data                          # nama volume untuk di mount ke pod
        persistentVolumeClaim:
          claimName: myapp-pvc              # nama pvc yg sebelumnya dibuat
      containers:
        - name: my-app
          image: registry.gitlab.com/rheno.sulistyo/my-app
          imagePullPolicy: Always
          ports:
            - containerPort: 8081
          volumeMounts:
          - mountPath: /data                # lokasi untuk mount di pod
            name: data                      # nama volume yg dibuat di atas

lalu apply deployment tersebut.

kubectl -n testing-myapp apply -f myapp.yaml

cek pada dashboard longhorn.

image.png

cek pada pod

image.png

pvc berhasil mount ke pod.