![[Kubernetes] Kubernetes Volume 완벽 정리: 실제 예제를 통한 PV, PVC, 그리고 StorageClass](/static/efd03ad3a3a9a64ec59b3c31222be1b9/f6053/K8SVolumne.png)
POD의 Container는 이미지로부터 파일시스템을 제공받는데, POD가 종료되면 POD내의 데이터(파일)은 더 이상 사용할 수 없게 됩니다.
Controller에의해 새 POD가 생성되면 이미지로부터 새로운 파일시스템을 제공받는 구조로 설계되어 있기 때문입니다.
즉 Container는 기본적으로 데이터를 유지하지 않으며, 이런 형태를 상태가 없다(Stateless) 라고 합니다.
POD는 데이터 보존을 위해 Volume을 생성하고 이런 Volume을 Container에 Mount해서 사용하게됩니다. 물론 Volume은 여러 POD에서 동시에 접근이 가능하구요
기본적인 Volume의 LifeCycle은 POD의 LifeCycle과 같은데, POD가 생성되고 삭제됨에 따라 Volume도 같이 생성되고 삭제되기 때문입니다.
그러나 POD가 재 시작되면 Volume의 데이터는 삭제되지 않고 유지되며, 재 시작 된 POD에게 해당 Volume의 데이터를 다시 제공해줍니다.
PersistentVolume, PersistentVloumeClaim로 Volume만의 LifeCycle은 분리할 수 있고, POD의 로직과 별도로 Volume(스토리지)을 사용 할 수 있습니다.
Kuberntes는 Volume을 POD에 직접 할당하는 방식이 아닌 PVC를 둠으로 POD와 스토리지를 분리했습니다.
이 구조는 각자의 상황에 맞게 다양한 스토리지를 사용할 수 있게 해줍니다. CLOUD를 사용하는 경우에는 본인이 사용하는 CLOUD SaaS를 Volume 서비스를 사용할 수도 있고
직접 구축해서 사용 중인 스토리지가 있다면 그것 또한 사용할 수도 있습니다. 이렇게 다양한 스토리지를 PV로 사용할 수 있지만 POD에 직접 연결하는게 아니라 PVC를 통해서 사용하기 때문에 POD는 자신이 어떤 스토리지를 사용하는지 신경쓰지 않아도 됩니다.


Provisioning이라고 합니다.정적(static) : PV를 미리 만들어두고 사용합니다.동적(dynamic) : 요청이 있을때마다 PV를 만드는 방법.스토리지클래스(StorageClasses)를 사용합니다. StorageClasses를 이용해서 원하는 스토리지에 PV를 생성합니다.Retain : PV의 데이터를 그대로 보존 합니다.Recycle : 재사용하게될 경우 기존의 PV 데이터들을 모두 삭제 후 재사용 합니다.Delete : 사용이 종료되면 해당 Volume을 삭제 합니다.apiVersion: v1
kind: PersistentVolume
metadata:
name: dev-pv
spec:
capacity:
storage: 2Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
storageClassName: manual
persistentVolumeReclaimPolicy: Delete
hostPath:
path: /tmp/log_backup
path: /tmp/log_backupspec.capacity.storage → 사용할 용량을 2GB로 설정 합니다.spec.volumeMode → Volume을 Filesystem으로 사용 합니다.spec.accessModes → Pod의 접근 제어를 합니다.ReadWriteOnce : 하나의 Pod에서만 읽고 쓸 수 있습니다.ReadOnlyMany : 여러개의 Pod에서 읽을 수 있습니다.ReadWriteMany : 여러개의 Pod에서 읽고 쓸 수 있습니다.spec.storageClassName → 스토리지 클래스를 지정, 클래스에 맞는 PVC와 연결spec.persistentVolumeReclaimPolicy → Delete는 Volume의 사용이 종료되면 Volume을 삭제 합니다. 회수 단계에서 설명한 필드hostPath → 노드에 저장되는 디렉토리를 설정 합니다.accessModes는 Volume의 읽기/쓰기에 관한 옵션을 지정합니다.