[CKA] PersistentVolume
PersistentVolume의 핵심 개념과 구성 방법, 실습 풀이를 정리합니다.
Persistent Volume
- 기존 볼륨 방식의 한계
- 모든 스토리지 설정이 파드 정의 파일 내에 포함
- 각 파드마다 별도의 스토리지 구성 필요
- 스토리지 설정 변경 시 모든 파드 정의 파일을 수정해야 함
- 대규모 환경에서의 문제점
- 많은 사용자와 파드가 존재
- 반복적인 스토리지 구성 작업 필요
- 변경 사항 적용이 번거롭고 시간 소모적
- Persistent Volume의 등장 배경
- 스토리지의 중앙 집중식 관리 필요성
- 관리자가 큰 스토리지 풀을 미리 구성
- 사용자들이 필요에 따라 스토리지를 나눠서 사용
정리하면 Persistent Volume은 스토리지 관리를 중앙화하여 대규모 환경에서의 스토리지 운영을 효율적으로 만들기 위해 도입되었습니다.
Persistent volume은 클러스터에 애플리케이션을 배포하는 사용자가 사용하도록 관리자가 구성한 cluster-wide 스토리지 볼륨 풀입니다. 이제 사용자는 persistent volume claims을 사용하여 이 풀에서 스토리지를 선택할 수 있습니다.
Persistent volume을 생성하는 방법은 다음과 같습니다.
# PersistentVolume의 리소스 정의
kind: PersistentVolume
# Kubernetes API 버전 지정
apiVersion: v1
# PV의 메타데이터 섹션
metadata:
name: pv-vol1 # PV의 고유 식별자
# PV의 상세 스펙 정의
spec:
# 볼륨의 접근 모드 설정 (ReadWriteOnce, ReadOnlyMany, ReadWriteMany 중 선택)
accessModes: [ "ReadWriteOnce" ]
# 볼륨의 용량 설정
capacity:
storage: 1Gi # 1기가바이트 저장 공간 할당
# 호스트 경로 설정 (개발 환경 전용)
hostPath:
path: /tmp/data # 호스트의 실제 저장 경로
- 접근 모드 (accessModes)
ReadWriteOnce: 단일 노드에서 읽기/쓰기 가능ReadOnlyMany: 다중 노드에서 읽기만 가능ReadWriteMany: 다중 노드에서 읽기/쓰기 가능
- 용량 (capacity)
storage: 볼륨의 크기 지정- 단위: Ki, Mi, Gi, Ti, Pi, Ei 사용 가능
3. 볼륨 유형 (hostPath)
- 개발 환경용으로만 권장
- 프로덕션 환경에서는 다음 옵션들 고려할 수 있습니다.
- AWS EBS
- GCP Persistent Disk
- Azure Disk
- NFS
- Ceph
- GlusterFS
$ kubectl create -f pv-definition.yaml
persistentvolume/pv-vol1 created
$ kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
pv-vol1 1Gi RWO Retain Available 3min
$ kubectl delete pv pv-vol1
persistentvolume "pv-vol1" deleted