Ops/Kubernetes

K8S NFS 동적 프로비저닝 구현하기

록흐 2025. 9. 16. 17:12
반응형

 

 

 

https://github.com/kubernetes-sigs/nfs-subdir-external-provisioner

 

GitHub - kubernetes-sigs/nfs-subdir-external-provisioner: Dynamic sub-dir volume provisioner on a remote NFS server.

Dynamic sub-dir volume provisioner on a remote NFS server. - kubernetes-sigs/nfs-subdir-external-provisioner

github.com

 

NFS Provisioner를 활용하면, K8S에서 동적으로 NFS 스토리지에 볼륨을 생성할 수 있다. 

 

 

K8S에 Helm으로 NFS Provisioner 배포하기

helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/
helm repo update
helm install nfs-subdir-external-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner \
    --set nfs.server=x.x.x.x \      # NFS 스토리지 서버
    --set nfs.path=/exported/path   # NFS 데이터 저장 경로

 

 

배포될 K8S 모든 노드에 nfs-common 패키지를 설치하기

sudo apt-get install -y nfs-common

 

 

StorageClass 확인하기

root@test-205:~/mingu# k get storageClass
NAME         PROVISIONER                                     RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
nfs-client   cluster.local/nfs-subdir-external-provisioner   Delete          Immediate           true                   27m

 

 

Test PVC 생성하기

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: test-claim
spec:
  storageClassName: nfs-client
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 1Mi

 

 

PVC를 생성하여, NFS Provisiioner에서 동적으로 pv 생성을 요청한다. 

 

 

PV 생성확인 

root@test-205:~/mingu# k get pv
NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                          STORAGECLASS   VOLUMEATTRIBUTESCLASS   REASON   AGE
pvc-a484ff82-851f-4fd3-9236-357697a1c37c   8Gi        RWO            Delete           Bound    monitoring/prometheus-server   nfs-client     <unset>                          14m
반응형