온프레미스 Kubernetes 환경에서 nfs로 데이터 영속성(pv) 설정

Bumgu

2024/04/28

Categories: DevOps SRE Tags: Kubernetes

마스터 서버

1. 마스터 서버 NFS 서버 설치

2. 공유 디렉토리 지정

이후 nfs 재시작 systemctl restart nfs-server

nfs 옵션

ro : 읽기 권한 부여 한다.  
  
rw : 읽기 쓰기 권한 부여 한다.  
  
root_squash : 클라이언트에서 root를 서버상의 nobody 계정으로 매핑한다.  
  
no_root_squash : 클라이언트 및 서버 모두 root 계정 사용한다.  
  
sync : 파일시스템이 변경되면 즉시 동기화한다.  
  
all_squash : root 계정이 아닌 다른 계정도 사용 할  수 있게 한다.

클라이언트(워커노드) 서버

1. nfs 클라이언트 설치

2. 마운트

3. 마운트 됐는지 확인

192.168.64.129에서 test.txt파일을 만듭니다. nfs-server인 131번에서 공유 nfs 디렉토리를 확인해보면 공유가 된것을 확인 할 수 있습니다.

마스터 노드

1. StorageClass 설치

StorageClass는 클라우드 환경에서 pv가 요구하는 조건에 맞게 동적으로 볼륨을 생성해주는 프로비저닝 방식입니다. 즉 pv가 볼륨의 크기, ssd여부, filesystem type, zone등을 지정하면 그에 맞는 볼륨을 생성해줍니다.

설치는 helm 을 통해 설치합니다

# StorageClass repo 추가
helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/

# StorageClass repo 확인
helm repo list
# StorageClass 설치
helm install nfs-subdir-external-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner \
 --set nfs.server=${nfs 서버 IP} \
 --set nfs.path=${nfs 서버 공유 디렉토리 } \
 --set storageClass.name=nfs \
 --set storageClass.defaultClass=true
# 설치 확인
kubectl get sc

2. storageClass 사용

이제 기존의 pvc에서 StorageClassName을 지정해줍니다. kubectl get scStorageClass를 확인해보면 이름이 nfs이기에 StorageClassNamenfs를 적어주고 helm을 사용해 설치를하면 공유 디렉토리에 데이터 폴더가 생깁니다.

참고한 글:
https://junwork123.tistory.com/33
https://www.digitalocean.com/community/tutorials/how-to-set-up-an-nfs-mount-on-ubuntu-20-04

>> Home