- Retain : pvc 가 삭제되도, pv 는 유지 ( 재활용 )
- Delete : 볼륨 & Data 삭제
- recycle : Data 만 삭제 ( deplicated 된 옵션 )
Retain 이 기본값이다
- 이를 수동 파티셔닝으로 각 디렉토리의 용량을 제한할 수 있다
- pvc 의 요청 용량을 제한하는 방법
- 스토리지 리소스에 대한 사용량을 제한
NFS - Bind
IscsI - Mount실제로는 IscsI 방식을 많이 사용한다
이 경우 개발자가 요청한 볼륨은 미리 PV 에 담겨있어야 하므로, 반드시 관리자와의 커뮤니케이션이 필요하다. 하지만 갑작스럽게 볼륨이 필요하거나, 잦은 볼륨 요청이 있을 경우에는 적절한 방법이 아니다
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: fastdisk
provisioner: kubernetes.io/aws-ebs
type: gp2
fsType: ext4
zones: ap-northeast-2a
---
apiVersion : v1
kind: PersistentVolumeClaim
metadata:
name: pvc-fast-sc
spec:
storageClassName: fast
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
- 온 프레미스 환경이나 다른 퍼블릭 클라우드에서 사용이 불가능 하다
- 프로비저너는 요청에 맞는 저장 공간을 생성해준다. 생성한 저장 공간은 Pool 에 담는다
ebs 에서는 ssd 와 hdd 를 제공한다
- gp2 는 ssd 를 의미한다
- ext4 는 포멧이다
- zone 을 지정한다
즉, block storage 를 사용할 건데, ssd 에 포멧은 ext4 이고, zone 이 ap-northeast-2a 임을 storageclass 에 정의하였다
pvc 는 적용할 storageclass 를 명시하고, 파드와 볼륨이 1:1 방식이며, 1 GB 의 볼륨을 요청했다
사용자는 PVC 및 StorageClass 만 작성하면 된다. 이외의 작업은 AWS 에서 해준다
- 요청한 사용자만 사용 가능하게 해야 하므로, 요청한 사용자의 StorageClass Name 을 생성한 PV 의 storageClassName 을 지정해준다
- SA 와 Role 을 연결하기 위해서는 RoleBinding 이 필요하다
- SA 와 ClusterRole 을 연결하기 위해서는 ClusterRoleBinding 이 필요하다
- 프로비저너는 스토리지와 연결되어, 스토리지의 물리 자원을 공유해서 사용할 수 있다. 이를 통해 요청에 맞는 저장 공간을 생성해준다
- 이때, 스토리지에는 각 NS 별 저장 공간이 생기며, 해당 NS 에서 요청한 Pod 별로, 해당 NS 의 저장 공간 안에 각 Pod 별 저장 공간이 생긴다