정의 : emptyDir는 파드 간에 데이터를 공유하는 일시적인 스토리지를 제공하는 Kubernetes 볼륨 타입입니다. 이 스토리지는 파드의 라이프사이클 동안 존재하며 파드가 삭제되면 데이터가 손실됩니다.
특징
node - 특정 pod 끼리의 데이터 공유
이므로 container의 restart시에는 데이터가 보존되지만 pod의 restart시에는 data가 보존되지 않습니다.정의 방법
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: my-container
image: nginx
volumeMounts:
- name: my-volume
mountPath: /data
volumes:
- name: my-volume
emptyDir: {}
정의 : hostPath는 호스트 노드의 파일 시스템 경로를 파드 내에서 사용할 수 있도록 하는 Kubernetes 볼륨 타입입니다. 이를 통해 호스트 노드의 파일 시스템에 직접 액세스할 수 있습니다.
특징
Node - Pod 끼리의 데이터 공유
이므로 container 혹은 pod가 restart 되어도 데이터가 보존됩니다. 하지만 Node가 종료되면 데이터는 소실됩니다.정의 방법
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
containers:
- name: my-container
image: nginx
volumeMounts:
- name: my-volume
mountPath: /hostpath-data # docker container 내부
volumes:
- name: my-volume
hostPath:
path: /hostpath/data # pod 내부
emptyDir는 일시적인 데이터 저장소로 사용되며, 파드 간에 데이터를 공유할 때 유용합니다. hostPath는 특정 노드의 파일 시스템에 직접 액세스해야 하는 경우에만 사용해야 하며 주의해야 합니다. 두 경우 모두 개발/테스트용으로는 사용하기 무난하지만 운영 환경에서는 Storage Class 및 PVC를 사용하는 것이 더 안전하고 이식성 있는 옵션입니다.
정의 : PV는 클러스터 내의 지속적인 스토리지를 나타냅니다. 이는 클러스터 관리자에 의해 물리적으로 프로비저닝 된 스토리지 볼륨을 나타내며, 파드나 컨테이너에 연결하여 사용됩니다.
특징
정의 방법
apiVersion: v1
kind: PersistentVolume
metadata:
name: my-pv
spec:
capacity:
storage: 5Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: slow
hostPath:
path: /tmp/data
AccessMode 종류
읽기/쓰기 권한이 있는 단일 파드에만 마운트
될 수 있습니다. 다른 파드에서는 마운트 및 읽기 또는 쓰기 액세스를 할 수 없습니다.여러 파드에서 읽기 전용으로 마운트
될 수 있습니다. 여러 파드가 PV를 읽을 수 있지만 쓰기 권한은 없습니다.여러 파드에서 읽기/쓰기 권한을 가지고 마운트
될 수 있습니다. 여러 파드가 PV를 마운트하고 동시에 읽고 쓸 수 있습니다.정의 : PVC는 사용자 또는 애플리케이션이 PV를 요청하고 바인딩하기 위한 객체입니다. PVC는 PV에 대한 동적 프로비저닝 요청을 할 수 있으며 스토리지를 사용할 수 있게 해줍니다.
특징
정의 방법
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 2Gi
storageClassName: "demo-storage"
정의 : StorageClass는 동적 스토리지 프로비저닝을 관리하기 위한 설정 및 옵션을 제공하는 객체입니다. 스토리지 프로바이더와 함께 동적으로 PV를 프로비저닝하도록 지원합니다.
특징
정의 방법
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: slow
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: Immediate
volumeBindingMode 종류
Immediate (즉시 바인딩) : Immediate 바인딩 모드에서는 PV가 즉시 프로비저닝되어 요청된 PVC와 바인딩
됩니다. 이 모드는 PVC를 만들 때 PV가 없는 경우에도 PVC가 즉시 생성됩니다. 그러나 PV 프로비저닝이 지연될 수 있으므로 클러스터의 노드 및 스토리지 상태에 따라 PV가 사용 가능한 상태가 될 때까지 대기해야 할 수 있습니다.
WaitForFirstConsumer (첫 번째 사용자 대기) : WaitForFirstConsumer 바인딩 모드에서는 PV가 PVC와 바인딩되기 전에 첫 번째 파드 또는 컨테이너가 PVC를 사용하기 위해 요청할 때까지 기다립니다.
즉, PV는 PVC의 첫 번째 사용자가 요청한 후에만 프로비저닝됩니다. 이 모드는 PV 프로비저닝을 늦추지만, PV가 실제 사용되는지 확인할 수 있는 추가적인 안정성을 제공합니다.
YOUTUBE__Kubernetes Volumes Simplified
DOCS__Kubernetes Volumes