반응형
1. 개념
- 영속성을 보장할 수 없는 파드에 데이터를 저장할 경우 언제든 데이터가 사라질 가능성 존재
- 따라서 파드의 생명주기와 무관하게 저장이 유지되는 데이터 저장소가 필요한데 이런 요구사항을 만족하기 위한 개념이 PV(PersistentVolume)와 PVC(PersistentVolumeClaim)
- PV : 데이터를 저장할 볼륨. 볼륨을 생성하고 이를 클러스터에 등록한 것
- PVC : 필요한 저장 공간·RW모드 등 요청사항을 기술한 명세로서 PV에 전달하는 요청. PV와 바인딩을 하는 목적으로 사용
2. PV 생성
- demo-pv라는 PV 생성
apiVersion: v1
kind: PersistentVolume
metadata:
name: demo-pv
spec:
capacity:
storage: 100Mi
accessModes:
- ReadWriteMany
hostPath:
path: "/pv/log"
persistentVolumeReclaimPolicy: Retain
- capacity : 볼륨 크기
- accessModes : 볼륨 RW 모드
- ReadWriteOnce : 하나의 노드에서만 RW 가능
- ReadOnlyMany : 여러 노드에서 R 가능
- ReadWriteMany : 여러 노드에서 RW 가능
- persistentVolumeReclaimPolicy : PV 릴리즈(사용 종료) 시 볼륨에 저장된 데이터 삭제 옵션
- Retain : PVC가 삭제되어도 PV(볼륨)의 데이터를 보존. 하지만 해당 PV를 다른 PVC가 사용하지 못하고, 재사용하기 위해서는 수동으로 PV를 반환해야 함
- Delete : PVC가 삭제되면 PV(볼륨)의 데이터를 비롯해 PV(볼륨) 자체를 삭제
- Recycle : PVC가 삭제되면 PV(볼륨)의 데이터만 삭제하고 볼륨 자체는 보존하여 곧바로 다른 PVC에 사용 가능. 하지만 현재는 deprecated되어 사용을 권하지 않음
3. PVC 생성
- demo-pvc라는 PVC 생성
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: demo-pvc
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 50Mi
- accessModes : 사용하고자 하는 PV의 accessModes와 동일한 옵션을 사용해야 bound 가능
- requests : 사용을 원하는 볼륨의 요구조건을 명시
- storage : 사용하고자 하는 최소한의 크기로서 명시한 용량보다 큰 PV도 상관 없음
4. PV, PVC 정보 확인
- 목록 및 상태 확인 : kubectl get persistentvolume | persistentvolumeclaims
- 세부정보 확인 : kubectl describe persistentvolume [PV_이름] | [PVC_이름]
5. 애플리케이션(파드, 디플로이먼트)에서 볼륨 또는 PVC 마운트
- 볼륨 마운트
apiVersion: v1
kind: Pod
metadata:
name: webapp
spec:
containers:
- name: webapp
image: nginx
volumeMounts:
- name: log-vol
mountPath: "/log"
volumes:
- name: log-vol
hostPath:
path: "/var/log/webapp"
- PVC 마운트
apiVersion: v1
kind: Pod
metadata:
name: webapp
spec:
containers:
- name: webapp
image: nginx
volumeMounts:
- name: log-vol
mountPath: "/log"
volumes:
- name: log-vol
persistentVolumeClaim:
claimName: demo-pvc
반응형
'Kubernetes' 카테고리의 다른 글
Kubernetes Ingress 개념 및 설정 (0) | 2023.03.16 |
---|---|
Kubernetes StorageClass 개념 및 설정 (0) | 2023.03.16 |
Kubernetes 네트워크 정책(NetworkPolicy) 개념 및 설정1 (0) | 2023.03.16 |
Kubernetes SecurityContext 개념 및 설정1 (0) | 2023.03.16 |
Kubernetes 프라이빗 레포지토리(PrivateRepository) 개념 및 설정 (0) | 2023.03.16 |