Kubernetes - PersistentVolume - NFS적용

choko's avatar
Jun 29, 2024
Kubernetes - PersistentVolume - NFS적용
Contents
NFS

NFS

  • NFS(Network File System)
    • 네트워크에 파일을 저장하는 메커니즘
    • 사용자가 원격 컴퓨터에 있는 파일 및 디렉토리에 액세스 할 수 있고, 해당 파일 및 디렉토리가 로컬에 있는 것처럼 허용하는 분산 파일 시스템
    • 쿠버네티스의 PersistentVolume를 적용하는데 사용된다.
  • 쿠버네티스에서의 NFS 필요성
    • 지속적인 스토리지 제공
      • Run/Delete 되는 컨테이너의 특성상, 데이터를 영구적으로 저장하기 위해서는 컨테이너 외부 스토리지 시스템이 필요함
    • 다중 Pod access
      • 여러 pod가 같은 파일 시스템에 접근해야 함
  • NFS 적용 방법
    • OS : Ubuntu 20.04 기준
    • nfs 설치
      • sudo apt-get -y install nfs-kernel-server sudo systemctl enable nfs-kernel-server
    • nfs 경로에 공유 폴더 생성 및 권한 설정
      • sudo mkdir -p \ /opt/sharedvolume/db \ /opt/sharedvolume/shared \ /opt/sharedvolume/storage \ /opt/sharedvolume/redis sudo chmod \ -R 777 \ /opt/sharedvolume/db \ /opt/sharedvolume/shared \ /opt/sharedvolume/storage \ /opt/sharedvolume/redis
    • nfs 설정 추가
      • /etc/exports : 이 파일에 NFS를 통해 공유하려는 파일 시스템의 디렉토리와 해당 디렉토리에 대한 접근 권한을 클라이언트에게 제공하는 방법 정의
        • echo '/opt/sharedvolume *(rw,sync,no_subtree_check,no_root_squash)' sudo tee -a /etc/exports
      • /opt/sharedvolume 의 파일들에 rw,sync,no_subtree_check,no_root_squash 설정들을 부여하겠다고 명시
    • 설정 적용
      • sudo systemctl restart nfs-server sudo exportfs -v
 
  • PersistentVolume
--- kind: PersistentVolume apiVersion: v1 metadata: name: storage-pv labels: type: local spec: storageClassName: manual capacity: storage: 200Gi accessModes: - ReadWriteMany nfs: path: /opt/sharedvolume/storage server: %MASTER_IP% readOnly: false
 
  • PersistentVolumeClaim
--- kind: PersistentVolumeClaim apiVersion: v1 metadata: name: storage-pvc namespace: mdl spec: storageClassName: manual accessModes: - ReadWriteMany resources: requests: storage: 200Gi
 
  • Pod에서 사용
... pod metadata ... ===================== volumes: - name: sharedvolume persistentVolumeClaim: claimName: shared-pvc
Share article

Tom의 TIL 정리방