본문 바로가기
개발/개발공부

Kubernetes Storage / emptydir, persistent volume

by 치킨개발자 2023. 5. 24.
728x90

Kubernetes Emptydir


EmptyDir 볼륨은 Pod와 함께 생성되고 삭제됨, lifecycle을 같이 가져가는 존재

Pod내의 모든 컨테이너는 emptyDir 볼륨에 접근 가능

디스크, SSD, 네트워크 스토리지등에 저장이 가능하고, emptyDir.medium 필드를 Memory로 설정시 tmpfs RAM에 마운트 가능

대신 메모리 제한에 유의

apiVersion: v1
kind: Pod
metadata:
  name: test-pd
spec:
  containers:
  - image: registry.k8s.io/test-webserver
    name: test-container
    volumeMounts:
    - mountPath: /cache
      name: cache-volume
  volumes:
  - name: cache-volume
    emptyDir: {}

 

https://kubernetes.io/docs/concepts/storage/volumes/#emptydir-configuration-example

emptyDir 명세 예시

Kubernetes EmptyDir, HostPath, NetworkStorage(NFS)

EmptyDir을 사용하면 Pod와 같은 lifecycle을 갖고 동작

Pod내 container들간 데이터 공유를 위해 사용되기 때문에 다른 Pod의 container에서는 접근이 불가

공유되는 스토리지를 사용하고싶다면 NFS, HostPath volume, PV(persistent volume)을 사용해야함

 

반응형

Kubernetes Persistent Volume


cluster-wide한 스토리지로 사용가능하고 Pod와 독립적으로 프로비저닝 및 관리가능, lifecycle도 별도로 존재

스토리지용량을 정하고 Pod별 액세스하는 방식지정 가능 (ReadWriteOnce, ReadOnlyMany, ReadWriteMany)

동적으로 StorageClass를 이용하여 프로비저닝 가능 (Local, AWS, NFS등 뭐를 쓸지)

정적으로 사용자가 미리 생성하여 사용가능

Filesystem으로 마운트하거나 Block모드로 사용가능

PVC에서 스펙과 상태를 포함하는데, PV volumemode, PVC volumemode, 바인딩결과 등 케이스가 여러개가 존재

PV, PVC, bind spec

재사용 정책도 존재하여, Retain(수동 재활용), Delete(PV해제 시 삭제), Recycle(데이터만 삭제하고 볼륨은 재사용)등의 설정이 가능

 

#PV yaml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv0003
spec:
  capacity:
    storage: 5Gi
  volumeMode: Filesystem
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Recycle
  storageClassName: slow
  mountOptions:
    - hard
    - nfsvers=4.1
  nfs:
    path: /tmp
    server: 172.17.0.2
    
    
#PVC yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: myclaim
spec:
  accessModes:
    - ReadWriteOnce
  volumeMode: Filesystem
  resources:
    requests:
      storage: 8Gi
  storageClassName: slow
  selector:
    matchLabels:
      release: "stable"
    matchExpressions:
      - {key: environment, operator: In, values: [dev]}

https://kubernetes.io/docs/concepts/storage/persistent-volumes/

PV, PVC 명세 예시

 

PV명세에서는 용량, 볼륨모드(Filesystem, Block), accessModes(RWO, ROX, RWX 등), 스토리지 클래스, 마운트옵션(nfs...)등을 확인 가능

PVC명세에서는 볼륨과 동일하게 볼륨모드, accessModes를 사용하고, PV와 같은 storageclass를 사용하여 bind되는 것을 볼 수 있음. 추가로 selector를 통해 필터링하여 바인딩 가능

 

반응형

댓글