Contents
NFSNFS
- 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
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
- /etc/exports : 이 파일에 NFS를 통해 공유하려는 파일 시스템의 디렉토리와 해당 디렉토리에 대한 접근 권한을 클라이언트에게 제공하는 방법 정의
echo '/opt/sharedvolume *(rw,sync,no_subtree_check,no_root_squash)' sudo tee -a /etc/exports
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