애플리케이션 볼륨 사용법
빈디렉터리(emptydir)
pod-emptydir.yaml
- html-builder라는 컨테이너에서 생성한 페이지가 empty-directory 볼륨을 통하여 web-page 컨테이너에서 사용됨
호스트경로(hostpath)
- 각 노드(host)의 로컬 파일시스템의 파일 및 디렉토리를 Pod의 볼륨으로 제공
- 각 노드의 로그를 확인하기 위하여 호스트경로를 사용할 경우 Deployment로 배포하면 각 노드에 균등하게 배포되지 않을 가능성이 존재
- 이러한 목적으로 사용할 경우 DaemonSet을 사용함
NFS 볼륨
- NFS 서버의
/nfs_shared/nfs-vol
디렉토리를 컨테이너의 /audit
에 마운트
퍼시스턴트볼륨(PV)과 퍼시스턴트볼륨클레임(PVC)
- 사용자는 NFS에 직접 마운트하지 않고 PVC를 선언하여 PV를 사용함
- 새로운 Deployment가 배포되고 새로운 PVC가 선언될 경우 기존의 PV를 사용할 수 있음
persistentvolume-nfs.yaml, persistentvolumeclaim-nfs.yaml
deploy-pvc.yaml (+pvc)
스토리지클래스(StorageClass)
- PVC가 PV에 직접 접근할 경우 관리자가 항상 PV를 준비해야 함
- 관리자가 스토리지클래스를 생성할 경우 사용자가 PVC를 통하여 요청을 하면 PV가 자동으로 생성
볼륨과 클레임에 대한 생명 주기
- Provisioning: PVC 요청 및 PV 생성
- Binding: PV와 PVC를 연결
- Using
- Reclaiming
- 동적 프로비저닝을 사용할 경우 PVC의 요청이 들어올 때마다 PV가 생성됨
- Recycle을 사용하지 않고 동적 프로닝을 사용하도록 권고
DIR: nfs-subdir-external-provisioner/deployment.yaml (1/2), rbac.yaml
DIR: nfs-subdir-external-provisioner/deployment.yaml (2/2), rbac.yaml
- SIG 이미지를 사용
NFS_SERVER
의 value
와 NFS_PATH
의 value
가 nfs
의 server
와 path
에 각각 대응함
storageclass.yaml
persistentvolumeclaim-dynamic.yaml
- 스토리지클래스의 이름만 알면 요청하여 사용 가능
deploy-pvc.yaml(+pvc)
볼륨클레임템플릿(volumeClaimTemplates)
스테이트풀셋의 특별함
- 스테이트풀셋의 목적은 상태를 가지고 있는 것
- 각각의 파드가 고유의 상태를 가지고 있기 때문에 볼륨클레임템플릿을 사용하면 각각의 파드가 각각의 PV를 갖게 됨
디플로이먼트와의 비교
- 디플로이먼트의 파드들은 스토리지클래스에서 PV를 받아 사용
volumeclaimtemplates.yaml
- 각각의 파드만이 볼륨을 사용하기 때문에
accessModes
는 ReadWriteOnce