https://github.com/kubernetes-csi/csi-driver-nfs
GitHub - kubernetes-csi/csi-driver-nfs: This driver allows Kubernetes to access NFS server on Linux node.
This driver allows Kubernetes to access NFS server on Linux node. - kubernetes-csi/csi-driver-nfs
github.com
사내의 Kubernetes Cluster에서 NFS-CSI를 사용하여 Synology NAS를 스토리지로 사용하고 있었는데,
회사가 이전을 하며 IP 대역이 바뀌면서 기존에 IP로 등록해놓은 NAS의 주소를 일괄 변경해야 하는 이슈가 생겼습니다.
추후 같은 이슈를 대비하여 NAS 주소를 도메인으로 설정해놓은 방법을 적습니다.
1. 기존 PV의 persistentVolumeReclaimPolicy 수정
NFS-CSI는 기본 Reclaim Policy가 Delete입니다.
기본 옵션으로 사용했을 경우, PVC가 사라질 때 해당 디렉토리를 삭제하니 변경해주어야 합니다.
# 확인
> kubectl get pv {PVC_NAME} -o yaml | grep persistentVolumeReclaimPolicy
# 수정
> kubectl edit pv {PVC_NAME}
...
persistentVolumeReclaimPolicy: Retain
...
:wq!
2. 새로운 Storage Class 생성
NAS의 주소를 도메인으로 수정하여 Storage Class를 새로 생성합니다.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: {새로운 Storage Class}
provisioner: nfs.csi.k8s.io
parameters:
server: {NFS 서버의 주소}
share: /
# 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: Delete
volumeBindingMode: Immediate
allowVolumeExpansion: true
mountOptions:
- nfsvers=4.1
3. PV 생성
기존 PV와 같은 경로의 PV를 생성합니다.
> kubectl get pv {기존 PV_NAME} -o jsonpath="{.spec.csi.volumeAttributes.subdir}"
pvc-**************************
...
apiVersion: v1
kind: PersistentVolume
metadata:
annotations:
pv.kubernetes.io/provisioned-by: nfs.csi.k8s.io
name: {새로운 PV_NAME} <-- 수정
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
storageClassName: {새로운 Storage Class}
mountOptions:
- nfsvers=4.1
csi:
driver: nfs.csi.k8s.io
# volumeHandle format: {nfs-server-address}#{sub-dir-name}#{share-name}
# make sure this value is unique for every share in the cluster
volumeHandle: {NFS 주소}#{NFS 내 경로}#{기존 PV_NAME과 동일}##
volumeAttributes:
server: {NFS 주소}
share: {NFS 내 경로}
subdir: {기존 PV_NAME과 동일}
3. 새로운 PVC로 적용 후 기존 PV 삭제
새로운 PVC를 생성하여 사용하고 있던 워크로드에 등록하고, 기존 PV는 삭제할 수 있습니다.
'기타' 카테고리의 다른 글
| 자주 사용하는 스크랩 (0) | 2025.09.19 |
|---|---|
| Docker vs Podman (1) | 2025.05.19 |