본문으로 건너뛰기

NFS Client Provisioner

Kubernetes에서 PVC 요청 시 NFS 볼륨을 자동으로 생성(동적 프로비저닝)하는 구성 요소

목차


개념도

Kubernetes Cluster
┌──────────────────────────────────────────────────┐
│ PVC 생성 요청 │
│ │ │
│ ▼ │
│ ┌────────────────────────────────────┐ │
│ │ NFS Provisioner │ │
│ │ (kube-system) │ │
│ │ -> StorageClass: nfs-client │ │
│ └────────────────────────────────────┘ │
│ │ │
│ │ 폴더 자동 생성 │
│ │ │
└───────┼──────────────────────────────────────────┘

▼ NFS Mount
┌──────────────────────────────────────────────────┐
│ NFS Server (172.100.100.10) │
│ /mnt/DATA/{namespace}-{pvcName}-{pvName} │
└──────────────────────────────────────────────────┘

구성 요소

리소스이름네임스페이스
ServiceAccountnfs-client-provisionerkube-system
ClusterRolenfs-client-provisioner-runner-
ClusterRoleBindingrun-nfs-client-provisioner-
Roleleader-locking-nfs-client-provisionerkube-system
RoleBindingleader-locking-nfs-client-provisionerkube-system
Deploymentnfs-client-provisionerkube-system
StorageClassnfs-client-

환경 설정 (수정 필요)

변수현재 값설명
NFS_SERVER172.100.100.10NFS 서버 IP
NFS_PATH/mnt/DATANFS 공유 경로

StorageClass 설정

항목설명
namenfs-clientPVC에서 참조
provisionerk8s-sigs.io/nfs-subdir-external-provisionerProvisioner 식별자
reclaimPolicyDeletePVC 삭제 시 PV도 삭제
archiveOnDeletefalse삭제 시 폴더 보존 안 함
is-default-classtrue기본 StorageClass로 지정

서버 준비 사항

NFS 서버 설정 (172.100.100.10)

# NFS 서버 설치
sudo apt install nfs-kernel-server

# 공유 디렉토리 생성
sudo mkdir -p /mnt/DATA
sudo chown nobody:nogroup /mnt/DATA

# /etc/exports 설정
echo "/mnt/DATA 172.100.100.0/24(rw,sync,no_subtree_check,no_root_squash)" | sudo tee -a /etc/exports

# NFS 재시작
sudo exportfs -ra
sudo systemctl restart nfs-kernel-server

배포 명령어

kubectl apply -f nfs-provisioner.yaml

# 확인
kubectl get pods -n kube-system -l app=nfs-client-provisioner
kubectl get storageclass

PVC 테스트 예시

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc
spec:
accessModes:
- ReadWriteOnce
storageClassName: nfs-client # StorageClass 지정
resources:
requests:
storage: 1Gi

참고

  • Helm으로 설치 시: helm install nfs-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner

관련 문서

그래프 뷰

그래프 데이터 로딩 중…
현재: NFS Client Provisioner
노드 클릭 → 이동 · 드래그 → 위치 조정