<aside> 💡 helm이 설치되어 있어야 함
</aside>
참고: Github
nfs-client namespace 생성하기
kubectl create ns nfs-client
helm으로 설치한다.
helm repo add nfs-subdir-external-provisioner <https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/>
helm install nfs-subdir-external-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner \
--set nfs.server=192.168.0.51 \
--set nfs.path=/mnt/share \
-n nfs-client
그러면 아래와 같이 storage class가 생성된다.

동적 프로비저닝 기능을 사용하면 자동으로 PVC를 생성해주기 때문에 별도로 PVC를 만들 필요가 없다.
storageClassName은 위에서 만든 이름을 넣어준다.
kubectl apply -f - <<EOF
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: task-pv-claim
namespace: nfs-client
spec:
storageClassName: nfs-client
accessModes:
- ReadWriteMany
resources:
requests:
storage: 10Gi
EOF
위에서 만든 pvc를 먼저 정의한다. pvc와 같은 namespace이어야 한다.
mountPath는 nfs에서 마운트한 볼륨으로 정의한다.
apiVersion: v1
kind: Pod
metadata:
name: nginx-task-pvc-test
namespace: argo
spec:
containers:
- image: maersk/nginx
imagePullPolicy: Always
name: nginx
ports:
- containerPort: 80
protocol: TCP
volumeMounts:
- name: workdir
mountPath: /dataset
volumes:
- name: workdir
persistentVolumeClaim:
claimName: task-pv-claim
그러면 아래와 같은 경로로 데이터들이 저장된다.
<mount volume path>/<name space>-<PVC name>-<uuid>
예시