본문 바로가기
K8S

스토리지 오케스트레이션(Storage Orchestration)이란?

by 나하니인데 2025. 2. 6.
반응형
반응형

스토리지 오케스트레이션이란 Kubernetes에서 애플리케이션이 필요로 하는 스토리지를 자동으로 할당, 연결, 관리하는 기능을 의미해요.
즉, 컨테이너가 실행될 때 적절한 스토리지를 자동으로 프로비저닝(할당)하고, 컨테이너가 종료될 때도 스토리지를 적절히 정리하는 과정을 담당합니다.

 

왜 스토리지 오케스트레이션이 필요한가?

기존 전통적인 서버 환경에서는 스토리지를 직접 관리해야 했습니다.
하지만 Kubernetes와 같은 컨테이너 환경에서는 컨테이너가 동적으로 생성되고 삭제되기 때문에,
스토리지를 수동으로 할당하는 것이 어렵습니다.

 

💡 Kubernetes의 스토리지 오케스트레이션 기능을 사용하면?
1. 애플리케이션이 필요할 때 자동으로 스토리지 생성
2. 컨테이너가 다른 노드로 이동해도 지속적으로 데이터 유지 가능
3. 스토리지 종류(로컬, 클라우드, 네트워크 스토리지)를 쉽게 변경 가능

 

 

Kubernetes의 주요 스토리지 리소스

스토리지 오케스트레이션을 위해 Kubernetes는 여러 개의 스토리지 관련 객체를 제공합니다.
대표적으로 PersistentVolume(PV), PersistentVolumeClaim(PVC), StorageClass가 있어요.

 

PersistentVolume (PV):

클러스터 내에서 사용 가능한 스토리지 자원 정의

 

PersistentVolumeClaim (PVC):

애플리케이션이 요청하는 스토리지 리소스

StorageClass:

동적 프로비저닝을 위한 스토리지 설정

 

스토리지 오케스트레이션의 주요 기능

 

  • 스토리지 프로비저닝(Storage Provisioning)
    • 애플리케이션이 필요할 때 자동으로 스토리지를 생성
    • 사전에 정의된 StorageClass를 사용하여 다양한 스토리지 백엔드를 활용 가능
    • 예: AWS EBS, Google Persistent Disk, NFS  등
    • Static Provisioning(수동 할당) vs Dynamic Provisioning(자동 할당)
  • 스토리지 연결 및 마운트
    • 컨테이너가 실행될 때 필요한 스토리지를 자동으로 마운트
    • Pod가 다른 노드로 이동해도 지속적인 데이터 접근 가능 (Persistent Volume)
  • 스토리지 확장(Expansion)
    • 필요할 경우 스토리지 크기를 동적으로 확장 가능
    • 예: PVC 크기 증가 지원 (allowVolumeExpansion 설정)
  • 스토리지 접근 모드(Access Modes) 지원
    • 여러 개의 Pod에서 동일한 볼륨을 공유하거나, 특정 Pod만 접근하도록 설정 가능
    • 예: ReadWriteOnce(RWO), ReadOnlyMany(ROX), ReadWriteMany(RWX)
  • 스토리지 정리 및 반환(Reclaiming)
    • Pod가 삭제되거나 더 이상 스토리지가 필요 없을 경우 정리
    • Reclaim Policy(재사용 정책): Retain(유지), Recycle(재사용), Delete(삭제) 중 선택 가능

 

스토리지 오케스트레이션의 예제

1.  정적 프로비저닝(Static Provisioning)

관리자가 미리  PersistentVolume(PV) 을 생성하고, 애플리케이션이 PersistentVolumeClaim(PVC) 을 사용하여 요청하는 방식.

## pv 예제

apiVersion: v1
kind: PersistentVolume
metadata:
  name: example-pv
spec:
  capacity:
    storage: 10Gi
  accessModes:
    - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  hostPath:
    path: "/mnt/data"

 

 

## pvc 예제

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: example-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi

 

2.  동적 프로비저닝(Dynamic Provisioning)

Kubernetes가 자동으로 스토리지를 생성하는 방식.
사용자는 StorageClass를 정의하고, PVC가 생성되면 자동으로 PV가 할당됨.

## storage class 

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: fast-storage
provisioner: kubernetes.io/aws-ebs
parameters:
  type: gp2
allowVolumeExpansion: true
## dynamic pvc 예제

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: dynamic-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 20Gi
  storageClassName: fast-storage

 

PVC가 생성되면, Kubernetes가 자동으로 AWS EBS 볼륨을 생성하고 연결해 줍니다.

 

스토리지 오케스트레이션을 사용하면?

1. 컨테이너 환경에서도 데이터를 지속적으로 저장 가능

2. 애플리케이션 요구 사항에 따라 스토리지 할당을 자동화

3. 클라우드, 온프레미스 등 다양한 스토리지 백엔드와 연동 가능

4. 스토리지 관리가 간편해지고, 운영 효율성이 향상됨

반응형

댓글