Link Search Menu Expand Document

애플리케이션 볼륨 사용법

빈디렉터리(emptydir)

pod-emptydir.yaml

애플리케이션 볼륨 사용법 - 01 빈디렉터리

  • html-builder라는 컨테이너에서 생성한 페이지가 empty-directory 볼륨을 통하여 web-page 컨테이너에서 사용됨

호스트경로(hostpath)

애플리케이션 볼륨 사용법 - 02 호스트경로

  • 각 노드(host)의 로컬 파일시스템의 파일 및 디렉토리를 Pod의 볼륨으로 제공
  • 각 노드의 로그를 확인하기 위하여 호스트경로를 사용할 경우 Deployment로 배포하면 각 노드에 균등하게 배포되지 않을 가능성이 존재
    • 이러한 목적으로 사용할 경우 DaemonSet을 사용함

NFS 볼륨

애플리케이션 볼륨 사용법 - 03 NFS 볼륨

  • NFS 서버의 /nfs_shared/nfs-vol 디렉토리를 컨테이너의 /audit에 마운트

퍼시스턴트볼륨(PV)과 퍼시스턴트볼륨클레임(PVC)

애플리케이션 볼륨 사용법 - 04 PV와 PVC

  • emptyDir에는 관리자가 관여하지 않음

애플리케이션 볼륨 사용법 - 05 PV와 PVC

  • 사용자는 NFS에 직접 마운트하지 않고 PVC를 선언하여 PV를 사용함
  • 새로운 Deployment가 배포되고 새로운 PVC가 선언될 경우 기존의 PV를 사용할 수 있음

persistentvolume-nfs.yaml, persistentvolumeclaim-nfs.yaml

애플리케이션 볼륨 사용법 - 06 PV와 PVC

deploy-pvc.yaml (+pvc)

애플리케이션 볼륨 사용법 - 07 PV와 PVC

  • claimName을 통하여 PV에 접근

스토리지클래스(StorageClass)

애플리케이션 볼륨 사용법 - 08 스토리지클래스

  • PVC가 PV에 직접 접근할 경우 관리자가 항상 PV를 준비해야 함

애플리케이션 볼륨 사용법 - 09 스토리지클래스

  • 관리자가 스토리지클래스를 생성할 경우 사용자가 PVC를 통하여 요청을 하면 PV가 자동으로 생성

볼륨과 클레임에 대한 생명 주기

애플리케이션 볼륨 사용법 - 10 스토리지클래스

  1. Provisioning: PVC 요청 및 PV 생성
  2. Binding: PV와 PVC를 연결
  3. Using
  4. Reclaiming
    • 동적 프로비저닝을 사용할 경우 PVC의 요청이 들어올 때마다 PV가 생성됨
    • Recycle을 사용하지 않고 동적 프로닝을 사용하도록 권고

DIR: nfs-subdir-external-provisioner/deployment.yaml (1/2), rbac.yaml

애플리케이션 볼륨 사용법 - 11 스토리지클래스

DIR: nfs-subdir-external-provisioner/deployment.yaml (2/2), rbac.yaml

애플리케이션 볼륨 사용법 - 12 스토리지클래스

  • SIG 이미지를 사용
  • NFS_SERVERvalueNFS_PATHvaluenfsserverpath에 각각 대응함

storageclass.yaml

애플리케이션 볼륨 사용법 - 13 스토리지클래스

persistentvolumeclaim-dynamic.yaml

애플리케이션 볼륨 사용법 - 14 스토리지클래스

  • 스토리지클래스의 이름만 알면 요청하여 사용 가능

deploy-pvc.yaml(+pvc)

애플리케이션 볼륨 사용법 - 15 스토리지클래스

볼륨클레임템플릿(volumeClaimTemplates)

스테이트풀셋의 특별함

애플리케이션 볼륨 사용법 - 16 볼륨클레임템플릿

  • 스테이트풀셋의 목적은 상태를 가지고 있는 것
  • 각각의 파드가 고유의 상태를 가지고 있기 때문에 볼륨클레임템플릿을 사용하면 각각의 파드가 각각의 PV를 갖게 됨

디플로이먼트와의 비교

애플리케이션 볼륨 사용법 - 17 볼륨클레임템플릿

  • 디플로이먼트의 파드들은 스토리지클래스에서 PV를 받아 사용

volumeclaimtemplates.yaml

애플리케이션 볼륨 사용법 - 18 볼륨클레임템플릿

  • 각각의 파드만이 볼륨을 사용하기 때문에 accessModesReadWriteOnce