사전 준비

NFS Subdir External Provisioner 설치하기

<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=<efs id> \
    --set nfs.path=/ \
		-n nfs-client

PVC 생성

동적 프로비저닝 기능을 사용하면 자동으로 PVC를 생성해주기 때문에 별도로 PVC를 만들 필요가 없다.

storageClassName은 위에서 만든 이름을 넣어준다.

kubectl apply -f - <<EOF
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: task-pv-claim
  namespace: argo
spec:
  storageClassName: nfs-client
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 1000Gi
EOF

Test용 pod생성

pvc는 위에서 만든 task-pv-claim를 넣어주었다.

이제 pod 내부의 /var/www경로는 efs와 마운트된다.

kubectl apply -f - <<EOF
apiVersion: v1
kind: Pod
metadata:
  name: nginx-nfs-pvc-test
spec:
  containers:
  - image: maersk/nginx
    imagePullPolicy: Always
    name: nginx
    ports:
    - containerPort: 80
      protocol: TCP
    volumeMounts:
    - name: workdir
      mountPath: /var/www
  volumes:
  - name: workdir
    persistentVolumeClaim:
      claimName: task-pv-claim
EOF