본문 바로가기
Development, Architecture/Docker, k8s

[쿠버네티스] 볼륨 종류

by ggyongi 2024. 7. 27.
반응형

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

 

 

비전공자 네카라 신입 취업 노하우

시행착오 끝에 얻어낸 취업 노하우가 모두 담긴 전자책!

kmong.com

댓글