리눅스 서버에 NFS Server 구성 후 NFS CSI와 쿠버네티스 클러스터 연동
NFS 서버 구성
1. NFS Server에서 NAS용 LVM 설정
# 1. PV, VG, LV 구성
pvcreate /dev/sdb
vgcreate nfs-vg /dev/sdb
lvcreate -l 100%FREE -n nfs-lv nfs-vg
# 2. LVM 디스크 파일 시스템 포맷
mkfs.xfs /dev/nfs-vg/nfs-lv
# 3. Mount 폴더 생성
mkdir /nfs-storage
# 4. LVM 디스크 마운트
mount /dev/nfs-vg/nfs-lv /nfs-storage
# 5. /etc/fstab에 마운트 정보 추가
sudo cp /etc/fstab /etc/fstab.backup
echo "/dev/nfs-vg/nfs-lv /nfs-storage xfs defaults 0 2" | sudo tee -a /etc/fstab
2. NFS Server 설치
# 1. 패키지 설치
sudo apt update
sudo apt -y install nfs-kernel-server rpcbind
# 2. rpcbind 서비스 시작 및 활성화
sudo systemctl start rpcbind
sudo systemctl enable rpcbind
# 3. NFS 서버 서비스 시작 및 활성화
sudo systemctl start nfs-kernel-server
sudo systemctl enable nfs-kernel-server
# 4. 상태 확인
sudo systemctl status nfs-kernel-server
3. NFS Server 설정
# exports 파일 설정 : /etc/exports
/nfs-storage *(rw,sync,no_root_squash,no_subtree_check)
# 설정 반영
exportfs -r
# 재시작
systemctl restart nfs-server
4. NFS Client 설정
쿠버네티스 클러스터의 모든 노드에 NFS Client 설치
sudo apt-get install nfs-common -y
사설 레지스트리 사용 시 업데이트 필요한 정보
1. NFS CSI 관련 이미지 파일 및 목록
아래 이미지 목록을 다운로드 받은 후 사설 레지스트리로 이미지 업로드 필요
| File Name | Image Name | Description |
| csi-nfs-controller.yaml | · registry.k8s.io/sig-storage/csi-provisioner:v5.2.0 · registry.k8s.io/sig-storage/csi-resizer:v1.13.1 · registry.k8s.io/sig-storage/csi-snapshotter:v8.2.0 · registry.k8s.io/sig-storage/livenessprobe:v2.15.0 · registry.k8s.io/sig-storage/nfsplugin:v4.11.0 |
csi driver |
| csi-nfs-driverinfo.yaml | · registry.k8s.io/sig-storage/livenessprobe:v2.15.0 · registry.k8s.io/sig-storage/csi-node-driver-registrar:v2.13.0 · registry.k8s.io/sig-storage/nfsplugin:v4.11.0 |
|
| csi-snapshot-controller.yaml |
· registry.k8s.io/sig-storage/snapshot-controller:v8.2.0 |
|
| setup-snapshot-controller.yaml |
· registry.k8s.io/sig-storage/snapshot-controller:v8.2.1 | external snapshooter |
NFS CSI 설치
1. External Snapshotter 설치
# 1. 소스 코드 다운로드
git clone https://github.com/kubernetes-csi/external-snapshotter/
# 2. CRD 설치
cd ./external-snapshotter
kuberctl kustomize client/config/crd | kubectl create -f -
# 3. Controller 설치
kuberctl deploy/kubernetes/snapshot-controller | kubectl apply -f -
2. NFS CSI 설치
# 1. 소스 코드 다운로드
git clone https://github.com/kubernetes-csi/csi-driver-nfs.git
# 2. 설치 스크립트 실행
cd csi-driver-nfs
./deploy/install-driver.sh v4.11.0 local
3. 설치 결과 확인
kubectl -n kube-system get pod -o wide -l app=csi-nfs-controller
kubectl -n kube-system get pod -o wide -l app=csi-nfs-node
4. StorageClass 생성
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: nfs-csi
provisioner: nfs.csi.k8s.io
parameters:
server: 10.100.0.1 # nfs server ip
share: /nfs-storage # nfs folder path
# csi.storage.k8s.io/provisioner-secret is only needed for providing mountOptions in DeleteVolume
# csi.storage.k8s.io/provisioner-secret-name: "mount-options"
# csi.storage.k8s.io/provisioner-secret-namespace: "default"
reclaimPolicy: Retain
volumeBindingMode: Immediate
allowVolumeExpansion: true
mountOptions:
- nfsvers=4.1
- norevport
5. PVC 생성 Sample YAML
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nfs-csi-pvc
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 10Gi
storageClassName: nfs-csi
'Container > Kubernetes' 카테고리의 다른 글
| [Kubernetes] NetApp NAS CSI Driver (trident) (0) | 2025.12.05 |
|---|---|
| [Kubernetes] Secret 이용 Private Registry 인증정보 설정 (0) | 2025.04.02 |
| [Kubernetes] Kubespray로 k8s 설치 (0) | 2025.03.31 |
| [Kubernetes] StatefulSets and PersistentVolume YAML Sample (0) | 2025.03.24 |
| [Kubernetes] DaemonSet YAML Sample (0) | 2025.03.24 |