쿠버네티스 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 - 네트워크 드라이브 연결

그림1

이후 설정

그림2

결과

그림3

nfs로 파일 시스템 연동이 가능해진다

EFS

NFS와 같은 개념으로 아마존에서 제공하는 File System

EFS 생성

아마존 EFS 페이지에 접속해서 파일 시스템 생성 버튼 클릭

그림4

VPC는 기존의 EKS 클러스터에 적용된 VPC를 선택하고 사용자 지정 버튼 클릭

다음 버튼 클릭해서 네트워크 액세스 창 접근

그림5

설정한 보안 그룹 선택하고 생성 완료

워커 노드에 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

끝!