쿠버네티스 PV volume
PV와 PVC란?
PV(Persistent Volume)와 PVC(Persistent Volume Claim)는 쿠버네티스 리소스 중 하나이다. PV는 쿠버네티스 클러스터와 외부 스토리지를 연결을 담당, PVC는 PV와 파드를 연결을 담당한다.
NFS 서버 설치
root 계정으로 접속
sudo -i
NFS 패키지 프로그램 설치
apt install nfs-common nfs-kernel-server portmap
안된다면 업데이트 수행
공유 폴더 생성
mkdir /home/share/nfs -p
폴더 권한 부여
chmod -R 777 /home/share/nfs
공유폴더 연결 호스트 및 권한 설정
vim /etc/exports
아래 라인 추가 (예시)
/home/share/nfs 192.168.72.58(rw,sync)
디렉토리 목록 리플래쉬
exportfs -r
Windows nfs 연결
내 PC - 네트워크 드라이브 연결
이후 설정
결과
nfs로 파일 시스템 연동이 가능해진다
EFS
NFS와 같은 개념으로 아마존에서 제공하는 File System
EFS 생성
아마존 EFS 페이지에 접속해서 파일 시스템 생성 버튼 클릭
VPC는 기존의 EKS 클러스터에 적용된 VPC를 선택하고 사용자 지정 버튼 클릭
다음 버튼 클릭해서 네트워크 액세스 창 접근
설정한 보안 그룹 선택하고 생성 완료
워커 노드에 EFS 마운트
워커노드 쉘에 접속
root 권한 접속
sudo -i
마운트 할 디렉토리 생성
mkdir /idt-data
마운트
mount -t nfs4 <파일 시스템 이름>.efs.ap-northeast-2.amazonaws.com:/ /idt-data
fs-xxxx 형식의 파일 시스템 이름 입력
마운트 결과 확인
mount | tail -1
EFS provisioner 생성
yaml 파일 다운로드
링크: https://github.com/kubernetes-retired/external-storage/tree/master/aws/efs/deploy
configmap.yaml 파일 수정
apiVersion: v1
kind: ConfigMap
metadata:
name: efs-provisioner
data:
file.system.id: fs-47a2c22e
aws.region: ap-northeast-2
provisioner.name: example.com/aws-efs
dns.name: ""
class.yaml 파일 수정
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: aws-efs
provisioner: example.com/aws-efs
deployment.yaml 파일 수정
아래 volume 부분 수정
...
volumes:
- name: pv-volume
nfs:
server: fs-47a2c22e.efs.ap-northeast-2.amazonaws.com
path: /
쿠버네티스 리소스 생성
kubectl apply -f class.yaml -f rbac.yaml -f deployment.yaml -f configmap.yaml
PVC 생성
yaml 파일
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: idt-agent-claim
annotations:
volume.beta.kubernetes.io/storage-class: "aws-efs"
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
storageClassName: test
PVC 생성
kubectl apply -f <파일명>.yaml
마운트 된 경로를 확인해보면 1G 크기의 폴더가 생성됨
[참조]https://kubesphere.com.cn/en/docs/v3.3/application-store/app-lifecycle-management/#step-2-upload-and-submit-application
끝!