[Storage] Persistent Volumes

IMKUNYOUNG·2024년 7월 29일
0

KCNA

목록 보기
29/56

Kubernetes는 컨테이너화된 애플리케이션을 관리하는 데 강력한 도구지만, 스토리지 관리는 여전히 많은 도전 과제를 안고 있습니다. 특히 대규모 환경에서 여러 파드에 대한 스토리지 구성을 관리하는 일은 매우 복잡할 수 있습니다. 이번 포스트에서는 Kubernetes에서 지속적인 볼륨(Persistent Volume, PV)을 사용하여 스토리지를 중앙에서 효율적으로 관리하는 방법을 살펴보겠습니다.

Persistent Volume이란

지속적인 볼륨(PV)은 클러스터 관리자가 생성하여 클러스터 내 모든 사용자와 파드가 사용할 수 있는 스토리지 리소스입니다. 사용자는 Persistent Volume Claim(PVC), Storage Class(SC), CSI를 통해, 또는 직접적으로 필요한 스토리지를 요청하고 PV에서 해당 스토리지를 할당받아 사용할 수 있습니다. 이를 통해 스토리지 관리를 중앙에서 일괄적으로 처리할 수 있으며, 각 파드에 대해 일일이 스토리지를 구성할 필요가 없어집니다.

persistent Volume 예제

다음은 PV 생성 예제입니다:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-vol1
spec:
  capacity:
    storage: 1Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/mnt/data"

위의 YAML 파일은 다음과 같은 구성을 포함하고 있습니다.

  • apiVersion: Kubernetes API 버전.
  • kind: 리소스 종류, 여기서는 PersistentVolume.
  • metadata.name: PV의 이름, 여기서는 pv-vol1.
  • spec.capacity.storage: PV에 예약된 스토리지 용량, 여기서는 1Gi.
  • spec.accessModes: 볼륨의 접근 모드, 여기서는 ReadWriteOnce로 설정. 다른 옵션으로는 ReadOnlyMany와 ReadWriteMany가 있습니다.
  • hostPath.path: 로컬 노드의 경로, 여기서는 /mnt/data.

프로덕션 환경에서의 스토리지 솔루션

위 예제에서는 hostPath를 사용했지만, 이는 주로 테스트 환경에서 사용해야 합니다. 프로덕션 환경에서는 AWS Elastic Block Store(EBS), Google Persistent Disk, NFS 등과 같은 클라우드 기반 또는 네트워크 기반 스토리지 솔루션을 사용하는 것이 좋습니다. 예를 들어, AWS EBS를 사용하는 PV는 다음과 같이 설정할 수 있습니다:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv-aws
spec:
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteOnce
  awsElasticBlockStore:
    volumeID: <your-volume-id>
    fsType: ext4

마치며

Kubernetes에서 지속적인 볼륨(PV)을 사용하면 스토리지 관리를 중앙에서 효율적으로 수행할 수 있습니다. 관리자는 큰 스토리지 풀을 생성하고, 사용자는 필요에 따라 이를 나눠 사용할 수 있습니다. 이는 대규모 환경에서 특히 유용하며, 스토리지 구성을 일관되게 유지하고 관리할 수 있는 강력한 방법입니다.

0개의 댓글