kubernetes-csi/csi-driver-nfs with subDir

Jbn1233
2 min readAug 10, 2024

--

By default nfs-csi store file in format nfs://nfs-server:/export-path/$pvname. With subDir will make it better.

nfs-csi StorageClass with SubDir: instance1/${pvc.metadata.namespace}/${pvc.metadata.name}/${pv.metadata.name}

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: nfs-csi
mountOptions:
- nfsvers=4.2
- rsize=65536
- wsize=65536
- async
- noatime
- tcp
parameters:
server: nas01
share: /nfs-server
subDir: instance1/${pvc.metadata.namespace}/${pvc.metadata.name}/${pv.metadata.name}
provisioner: nfs.csi.k8s.io
reclaimPolicy: Delete
volumeBindingMode: Immediate

PV:

nick@nick-iot:~$ k get pvc  -A
NAMESPACE NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
default nginx-pv-rwo Bound pvc-4451dbbc-7ea5-4f8a-acbc-9a855cdf6e98 1Gi RWO nfs-csi 16h
monitoring prometheus-k8s-db-prometheus-k8s-0 Bound pvc-33091c77-d4bc-4feb-8439-63999dc5df3c 5Gi RWO nfs-csi 29m
nginx nginx-pv-rwo Bound pvc-871f367f-5b4a-4de3-a16e-31f27d3cd322 1Gi RWO nfs-csi 41m
wordpress mysql-pv-claim Bound pvc-01b6e5ab-e507-43da-8b1b-9854e9a6b3ad 4Gi RWO nfs-csi 41m

Result:

$ k exec -it -n wordpress deployments/wordpress-mysql -- df -h
Filesystem Size Used Avail Use% Mounted on
overlay 20G 13G 6.3G 67% /
tmpfs 64M 0 64M 0% /dev
/dev/sda2 20G 13G 6.3G 67% /etc/hosts
shm 64M 0 64M 0% /dev/shm
nas01:/nfs-server/instance1/wordpress/mysql-pv-claim/pvc-01b6e5ab-e507-43da-8b1b-9854e9a6b3ad 293G 23G 255G 9% /var/lib/mysql
tmpfs 6.1G 12K 6.1G 1% /run/secrets/kubernetes.io/serviceaccount
udev 3.9G 8.0K 3.9G 1% /proc/keys
adm@nas01:~$ sudo find /nfs-server/instance1/ -type d
/nfs-server/instance1/
/nfs-server/instance1/monitoring
/nfs-server/instance1/monitoring/prometheus-k8s-db-prometheus-k8s-0
/nfs-server/instance1/monitoring/prometheus-k8s-db-prometheus-k8s-0/pvc-33091c77-d4bc-4feb-8439-63999dc5df3c
/nfs-server/instance1/monitoring/prometheus-k8s-db-prometheus-k8s-0/pvc-33091c77-d4bc-4feb-8439-63999dc5df3c/prometheus-db
/nfs-server/instance1/monitoring/prometheus-k8s-db-prometheus-k8s-0/pvc-33091c77-d4bc-4feb-8439-63999dc5df3c/prometheus-db/wal
/nfs-server/instance1/monitoring/prometheus-k8s-db-prometheus-k8s-0/pvc-33091c77-d4bc-4feb-8439-63999dc5df3c/prometheus-db/chunks_head
/nfs-server/instance1/nginx
/nfs-server/instance1/nginx/nginx-pv-rwo
/nfs-server/instance1/nginx/nginx-pv-rwo/pvc-871f367f-5b4a-4de3-a16e-31f27d3cd322
/nfs-server/instance1/wordpress
/nfs-server/instance1/wordpress/mysql-pv-claim
/nfs-server/instance1/wordpress/mysql-pv-claim/pvc-01b6e5ab-e507-43da-8b1b-9854e9a6b3ad
/nfs-server/instance1/wordpress/mysql-pv-claim/pvc-01b6e5ab-e507-43da-8b1b-9854e9a6b3ad/mysql
/nfs-server/instance1/wordpress/mysql-pv-claim/pvc-01b6e5ab-e507-43da-8b1b-9854e9a6b3ad/performance_schema

Thai is all.

--

--

Jbn1233
Jbn1233

Written by Jbn1233

Very short and simple notes for CKA/SRE and may not works on your environment | jbn1233@gmail.com | Bangkok, Thailand |

No responses yet