Kubernetes, CSI

Jeonghak Cho·2025년 4월 9일

Kubernetes

목록 보기
7/20

📗CSI 개요

쿠버네티스(Kubernetes)에서 CSI(Container Storage Interface) 는 외부 스토리지 시스템과 쿠버네티스 간의 스토리지 연동 표준 인터페이스이다. 이걸 통해 쿠버네티스가 다양한 스토리지 백엔드를 통합된 방식으로 사용할 수 있게 해준다. CSI는 CNCF(Cloud Native Computing Foundation)와 다양한 벤더들이 협력해서 만든 스토리지 플러그인 표준이다.

  • CSI의 장점
    • 쿠버네티스 외에도 Mesos, Nomad 등 다양한 오케스트레이터에서 동일하게 사용 가능
    • 쿠버네티스 버전에 종속되지 않고, 독립적인 CSI 플러그인 배포 가능
    • 벤더가 자신의 드라이버를 쉽게 개발·배포할 수 있음
    • 스토리지 타입 (블록, 파일, 오브젝트) 에 관계없이 표준화된 접근 가능

CSI는 다양한 스토리지 벤더(Dell, NetApp, Longhorn, Ceph 등)가 Kubernetes와 쉽게 연동 가능하게 해준다. 그리고, 쿠버네티스에서 스토리지 동적 프로비저닝, Attach/Detach, Mount/Unmount를 할 수 있게 해준다.

기능설명
볼륨 생성 (Provisioning)PVC 요청에 따라 새로운 볼륨을 백엔드에 생성
볼륨 삭제 (Deletion)PVC/PV가 삭제되면, 백엔드에서 실제 볼륨도 삭제
볼륨 마운트 (Attach/Mount)Pod가 스케줄된 노드에 볼륨을 연결하고 마운트
볼륨 언마운트 (Unmount/Detach)Pod 삭제 시, 노드에서 연결 해제
스냅샷 및 복원VolumeSnapshot API를 통해 스냅샷 생성 및 복원 지원 (선택적)
볼륨 확장 (Expansion)사용 중인 PVC 크기 변경 시 백엔드에서 볼륨 크기 확장 지원 (ReadWriteOnce만 대부분 지원)
접근 모드 지원 (Access Modes)ReadWriteOnce, ReadOnlyMany, ReadWriteMany 등 Pod 간 공유 여부 설정 가능 (스토리지 종류에 따라 다름)

🏳️‍🌈 [궁금한점]

  • CSI 가 무엇인가
  • 인기있는 CSI 드라이버는 어떤 것인가
  • 사용 규모에 따라 어떤 드라이버를 사용할 수 있나

🔗[목차]

CSI 작동 방식

CSI 구성 요소

컴포넌트설명
CSI Driver실제 스토리지와 연동되는 플러그인. 벤더가 개발
Node Plugin노드에 설치되어 볼륨을 attach/mount
Controller Plugin프로비저닝/삭제 등의 중앙 관리 역할 수행
External ProvisionerPVC 요청 시 Volume을 생성하도록 CSI 드라이버 호출
External AttacherPV가 Pod에 attach 될 때 사용
External ResizerPVC 사이즈가 변경될 때 CSI 드라이버 호출
External Snapshotter스냅샷 생성을 위한 컴포넌트
  • 동작 흐름 예시 (PVC → PV → Pod)
    1) 사용자가 PVC(PersistentVolumeClaim) 를 생성
    2) external-provisioner가 CSI 드라이버를 호출해 PV(PersistentVolume) 생성
    3) Pod가 생성되고, external-attacher + node plugin이 협력해서 Volume을 노드에 attach
    4) kubelet이 해당 볼륨을 Pod에 mount

CSI 드라이버

스토리지 벤더CSI 드라이버 이름설명
AWS EBSebs.csi.aws.comAmazon Elastic Block Store (블록 스토리지)
AWS FSx for Lustrefsx.csi.aws.com고성능 병렬 파일 시스템
AWS EFSefs.csi.aws.comElastic File System (다중 Pod 접근용 파일 스토리지)
GCP PDpd.csi.storage.gke.ioGoogle Persistent Disk (블록 스토리지)
GCP Filestorefilestore.csi.storage.gke.ioGCP의 NFS 기반 파일 공유 스토리지
Azure Diskdisk.csi.azure.comAzure Managed Disk (블록 스토리지)
Azure Filefile.csi.azure.comAzure Files (SMB 기반 공유 파일 스토리지)
Ceph RBDrbd.csi.ceph.comCeph 블록 스토리지
CephFScephfs.csi.ceph.comCeph 분산 파일 시스템
Longhorndriver.longhorn.ioRancher에서 만든 소형 분산 블록 스토리지
OpenEBS Jivajiva.csi.openebs.ioOpenEBS의 로컬 볼륨 엔진
OpenEBS Mayastorio.openebs.csi-mayastorNVMe 최적화 CSI 드라이버
Portworxpxd.portworx.com고성능, 엔터프라이즈용 분산 블록 스토리지
PowerFlex (Dell)csi-vxflexos.dellemc.comDell EMC의 PowerFlex용 CSI
PowerScale (Dell)csi-isilon.dellemc.comDell EMC의 NAS용 스토리지 (Isilon 기반)
NetApp Tridentcsi.trident.netapp.ioNetApp 전용 CSI, ONTAP/Cloud Volumes 지원
VMware vSpherecsi.vsphere.vmware.comvSphere 환경용 블록 스토리지 CSI
NFSnfs.csi.k8s.io범용 NFS 마운트용 CSI
HostPath (테스트용)csi-hostpath개발/테스트용 단일 노드 파일 저장소

주요 CSI 드라이버 특징

드라이버용도특징적합한 환경
Longhorn로컬 디스크 기반 분산 스토리지- Rancher에서 개발
- GUI 제공
- 경량 SDS
단일 노드 or 소규모 쿠버네티스
Ceph-CSI블록/파일 스토리지- RBD, CephFS 지원
- 대용량 분산
- 복제, 스냅샷 강력
중대형 쿠버네티스, On-prem
AWS EBS CSIAWS 블록 스토리지- EBS와 자동 연동
- AZ 간 이동은 제한적
퍼블릭 클라우드 (AWS)
GCP PD CSIGCP 퍼시스턴트 디스크- GKE와 최적화
- 디스크 타입, 스냅샷 지원
GCP 기반
NFS CSINFS 파일 시스템- 여러 Pod에서 동시에 마운트 가능
- 단순 설정
파일 공유 목적
PowerFlex CSIDell SDS- 고성능 스토리지
- MDM/SDC 구성 필요
대형 엔터프라이즈 환경
OpenEBS로컬 디스크 기반 블록 스토리지- 로컬/Replica 가능
- 다양한 엔진 (Jiva, cStor, Mayastor)
로컬 디스크 활용 목적
Cinder CSIOpenStack 블록 스토리지- Cinder와 연동
- 하이브리드 인프라에 적합
OpenStack 연동 필요 시

쿠버네티스 스토리지 구성 요소

구성설명
StorageClass어떤 CSI 드라이버를 쓸지 지정
CSI Driver백엔드 볼륨을 컨트롤
PVC사용자가 요청한 저장소 사양 (크기, 접근모드 등)
PodPVC를 실제로 마운트해 사용하는 컨테이너
  • PVC 요청시 이벤트 발생 순서
PVC (my-pvc)
  └── StorageClass (longhorn)
        └── CSI 드라이버 (driver.longhorn.io)
              └── 백엔드에 볼륨 생성 (5Gi)
                    └── Pod에 마운트됨

활용 방안

상황활용방법
다이나믹 스토리지 할당✔ PVC 만들면 자동으로 백엔드 볼륨 생김
멀티 노드 환경✔ Pod가 스케줄된 노드에만 볼륨 attach
클라우드 or 로컬 상관없이 사용 가능✔ AWS, GCP, Longhorn, Ceph 등 다 지원
스냅샷/복제 기능 활용✔ Snapshot Controller와 연동
스토리지 확장성✔ PVC 리사이징 시 자동 확장 (드라이버에 따라 지원)
운영 유지보수 간소화✔ 스토리지 생성/삭제/스냅샷 작업을 YAML 하나로 자동화
백업/복원 시나리오 적용✔ CSI 스냅샷 + Velero 등 백업 도구와 통합 가능
다양한 스토리지 벤더 교체 용이✔ CSI 표준 인터페이스로 드라이버만 교체하면 됨
스토리지 접근 모드 설정 가능✔ ReadWriteOnce, ReadOnlyMany, ReadWriteMany 설정 가능

스토리지 고려 요소별 권장 구성

고려 요소권장 구성
고성능 & 안정성Ceph-CSI, PowerFlex
클라우드 최적화EBS (AWS), PD (GCP), Azure Disk
간편한 구성Longhorn, NFS CSI
파일 공유NFS CSI, CephFS

소규모,중규모, 대규모 분리 기준 (대략적인 숫자 범위)

CSI와 같은 스토리지 컴포넌트에서 이 용어들을 쓸 때는 정량적인 노드/Pod 수 외에도,워크로드 특성, 스토리지 IOPS, 확장성, 관리 복잡도 등을 함께 고려해서 구분한다.

분류노드 수PVC 수예시추천 CSI 드라이버비고
소규모1~10개수십테스트 클러스터, PoC, 소규모 SaaScsi-hostpath, Longhorn, OpenEBS설치 간단, 가벼움
중규모10~100개수백~천 단위내부 시스템, 중형 서비스Longhorn, Ceph-CSI, NFS-CSIRWX 공유 필요 시 NFS, Ceph 적합
대규모100개 이상수천~수만금융/통신, 대규모 SaaS, 퍼블릭 클라우드Ceph-CSI, PowerFlex, Portworx, Cloud Provider CSI확장성과 성능 고려 필요
  • csi-hostpath: 테스트 전용, 단일 노드에서만 사용 가능
  • Longhorn: VM 환경이나 Rancher 환경에서 유용, 관리 UI 제공
  • Ceph-CSI: RBD(블록)와 CephFS(파일) 모두 제공, 확장성 뛰어남
  • PowerFlex: Dell EMC 제품군 기반, 고성능 고가용성
  • Portworx: 엔터프라이즈급, 다중 클러스터/멀티 클라우드 지원

CSI 관점의 구분 기준

CSI 드라이버 개발자나 스토리지 벤더 입장에서 "대규모"란 단순히 노드 수가 아니라 얼마나 많은 PVC가 빠르게 반복 생성/삭제되는지, 얼마나 높은 IOPS/Throughput이 필요한지, 얼마나 빠르게 장애 복구가 필요한지 “운영의 복잡도와 규모”를 기준으로 판단한다.
| 항목 | 소규모 | 중규모 | 대규모 |
|-----------------------|----------------------|--------------------------|----------------------------------------------------|
| 스토리지 성능 (IOPS) | 수백~천 | 수천~만 | 수만 이상 |
| 스냅샷/복제 빈도 | 낮음 | 중간 | 높음 (시간 단위 자동화) |
| PVC 생성 속도 요구 | 느려도 OK | 빠르면 좋음 | 매우 민감 (초 단위 요청 대응 필요) |
| 볼륨 공유 방식 | 단일 Pod ↔ Volume | 공유 필요 | 고밀도 공유, 동시성 고려 |
| 스토리지 HA 필요성 | 없어도 가능 | 기본 수준 | 매우 중요 (RAID, 복제, 장애복구 필수) |
| 스토리지 백엔드 예시 | Longhorn, NFS | Ceph, OpenEBS | PowerFlex, Portworx, EBS/Azure Disk at Scale |

  • 소규모

    • minikube, k3s, vagrant 환경
    • 팀 단위 테스트 클러스터
    • Longhorn + 3노드 구성 등
  • 중규모

    • R&D 환경
    • ML/배치 처리 시스템
    • Ceph-RBD + 10~30 노드 정도
  • 대규모

    • Kubernetes 기반 SaaS 플랫폼
    • 매일 수만 PVC 생성/삭제
    • PowerFlex, Portworx, Ceph Cluster 다중 Region 구성

소형, 대형 쿠버네티스 구분 이유

Longhorn은 소형/개발용 쿠버네티스에 적합하고, PowerFlex는 대규모/엔터프라이즈 환경에 적합하다고 구분되는 이유는 기술적인 아키텍처 차이, 성능, 확장성, 가용성 모델이 완전히 다르기 때문이다.

Longhorn vs PowerFlex 비교

항목Longhorn (소형/경량)PowerFlex (대형/고성능)
설계 철학쿠버네티스용 경량 분산 스토리지고성능 엔터프라이즈 스토리지
스토리지 타입노드 로컬 디스크 기반 (Replica)전용 디바이스 풀 기반 고성능 블록
데이터 복제 방식소프트웨어 기반 동기/비동기 복제 (예: 3-way)고속 네트워크 기반 고가용성 구조
확장성수십 TB / 수 노드 규모수 PB 이상, 수백 노드 지원 가능
성능네트워크/디스크 I/O에 민감 (Latency 높음)NVMe 및 RDMA 기반 극저지연 고성능
HA 구조Pod Replica로 구성됨SDC/MDM/SDS로 복원력 높은 구조
관리 방식간단한 GUI & CRD 기반Dell EMC 통합 관리 시스템 (GUI/CLI/API)
설치 용이성Helm 또는 Manifest로 간편 설치전용 인프라 요구 (서버, SAN, 고속 네트워크 등)
의존성별도 하드웨어 필요 없음Dell PowerFlex 하드웨어 필요
사용 사례테스트 환경, Dev/Stage, 소규모 운영금융, 통신, 대기업 핵심 서비스

실무에서 고려 포인트

고려 사항LonghornPowerFlex
장비가 없는데 테스트 가능?가능 (VM 기반으로 쉽게 설치 가능)어려움 (Dell 전용 HW 필요)
다수의 PVC 요청 동시 처리?가능하나 성능 저하 우려 있음고성능 구조로 높은 동시성 처리 가능
백업/복구 기능?내장된 백업 기능 제공 (S3 연동 등)강력한 스냅샷, 복제, 재해복구(DR) 기능 지원
스토리지 장애 대응?Replica 수에 따라 제한적 복원MDM+SDS 구조로 고가용성 및 자가 복구 능력 탁월

주요 드라이버 소개

Ceph-CSI

Ceph-CSI는 쿠버네티스에서 많이 쓰이는 고성능 스토리지 드라이버이다. 특히 블록과 파일 스토리지를 모두 지원하는 몇 안 되는 만능형 드라이버라서 많이 사랑받고 있다

Ceph 스토리지 타입

  • RBD (RADOS Block Device) – 블록 스토리지
    • Ceph에서 제공하는 블록 디바이스 기반 스토리지
    • 사용 예: DB, Kafka, Elasticsearch 등 단일 Pod에서 독점적으로 사용하는 앱
    • 연결 방식: Pod 하나 ↔ RBD Volume 하나
    • 파일 시스템은 보통 ext4, xfs를 그 위에 마운트
    • 높은 성능 (SSD 기반이면 거의 로컬처럼 빠름)
    • 쓰기 일관성이 뛰어남
    • CSI 통해 자동 스냅샷, 클론 지원

CephFS – 파일 시스템 스토리지

    • Ceph에서 제공하는 POSIX-compliant 분산 파일 시스템
    • 사용 예: 여러 Pod가 같은 디렉터리를 동시에 읽고 쓸 수 있어야 할 때 (ML, 로그 공유 등)
    • 연결 방식: 여러 Pod ↔ 동일한 CephFS Volume
    • 다중 마운트 지원 (NFS와 유사)
    • POSIX 파일 API 지원 (ls, mv, chmod 다 됨)
    • 디렉터리 단위로 Quota 설정 가능

Powerflex

Dell PowerFlex (이전 이름: VxFlex OS / ScaleIO)은 Dell에서 제공하는 고성능 소프트웨어 정의 스토리지이며, 이를 쿠버네티스에 연동하기 위해 PowerFlex CSI 드라이버를 사용할 수 있다.
Dell에서는 이를 위해 공식적으로 Container Storage Modules (CSM) 패키지를 제공하며, 그 안에 PowerFlex CSI 드라이버도 포함되어 있다.

  • 구성요소
구성요소설명
SDS (Storage Data Server)로컬 디스크를 스토리지 풀로 제공하는 노드
SDC (Storage Data Client)디스크를 마운트받는 쪽, 보통 애플리케이션 노드
MDM (Meta Data Manager)클러스터 전체의 메타데이터와 제어를 담당
GatewayREST API 또는 PowerFlex 관리 UI가 동작하는 엔드포인트
PowerFlex CSI쿠버네티스에서 PowerFlex 볼륨을 연결해주는 CSI 드라이버

0개의 댓글