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
Akses ui longhorn
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.
cek pada pod
pvc berhasil mount ke pod.