반응형
1. 공 디렉토리 볼륨 (emptyDir)
특징:
- 파드와 동일한 생애 주기: emptyDir 볼륨은 파드가 생성될 때 빈 디렉토리로 생성되고, 파드가 삭제될 때 함께 삭제됩니다.
- 데이터 유지: 파드 내의 컨테이너가 재시작되거나 대체되더라도 데이터는 유지됩니다.
- 임시 스토리지: 주로 캐시, 임시 데이터 저장소 등 일시적인 데이터 저장에 사용됩니다.
예시:
apiVersion: v1
kind: Pod
metadata:
name: emptydir-example
spec:
containers:
- name: busybox
image: busybox
command: ['sh', '-c', 'while true; do sleep 3600; done']
volumeMounts:
- mountPath: /data
name: temp-storage
volumes:
- name: temp-storage
emptyDir: {}
2. 호스트 경로 볼륨 (hostPath)
특징:
- 호스트 디스크 사용: hostPath 볼륨은 파드가 실행되는 노드의 파일 시스템의 특정 경로를 마운트합니다.
- 제한된 사용 사례: 주로 노드 간에 공유되는 디스크를 사용하지 않기 때문에, 특정 노드에서만 파드가 실행될 때 유용합니다.
- 데이터 유지 조건: 새 파드가 같은 노드에 배치될 때만 데이터를 사용할 수 있습니다.
예시:
apiVersion: v1
kind: Pod
metadata:
name: hostpath-example
spec:
containers:
- name: busybox
image: busybox
command: ['sh', '-c', 'while true; do sleep 3600; done']
volumeMounts:
- mountPath: /data
name: host-storage
volumes:
- name: host-storage
hostPath:
path: /mnt/data
3. 영구 볼륨 (PersistentVolume, PV)
특징:
- 파드와 독립적인 생애 주기: PV는 파드의 생애 주기와 독립적으로 존재하여, 파드가 삭제되더라도 데이터는 유지됩니다.
- 스토리지 프로비저닝: 클러스터 관리자가 수동으로 또는 동적으로 프로비저닝할 수 있습니다.
영구 볼륨 클레임 (PersistentVolumeClaim, PVC)
특징:
- 볼륨 요청: PVC는 사용자가 필요한 스토리지 리소스를 요청하는 방법입니다. PVC가 생성되면, 클러스터는 PVC를 만족시키는 PV를 할당합니다.
- 스토리지 클래스: 동적 프로비저닝에서 PVC는 스토리지 클래스를 지정하여, 그에 맞는 PV를 동적으로 생성합니다.
예시:
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-example
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /mnt/data/pv
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-example
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
정적 볼륨 프로비저닝
특징:
- 명시적인 PV와 PVC 생성: 관리자가 PV를 먼저 생성하고, PVC가 이를 요청하는 방식입니다.
예시:
# PersistentVolume 정의
apiVersion: v1
kind: PersistentVolume
metadata:
name: static-pv
spec:
capacity:
storage: 5Gi
accessModes:
- ReadWriteOnce
nfs:
path: /var/nfs
server: nfs-server.example.com
# PersistentVolumeClaim 정의
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: static-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
동적 볼륨 프로비저닝
특징:
- PVC만 생성: 사용자가 PVC만 생성하면, 클러스터가 PVC에 맞는 PV를 자동으로 생성합니다.
- 스토리지 클래스: PVC가 특정 스토리지 클래스를 지정하면, 해당 클래스에 맞는 스토리지가 동적으로 프로비저닝됩니다.
예시:
# StorageClass 정의
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: standard
provisioner: kubernetes.io/aws-ebs
parameters:
type: gp2
zones: us-west-1a, us-west-1b
# PersistentVolumeClaim 정의
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: dynamic-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
storageClassName: standard
댓글