쿠버네티스(Kubernetes)에서 CSI(Container Storage Interface) 는 외부 스토리지 시스템과 쿠버네티스 간의 스토리지 연동 표준 인터페이스이다. 이걸 통해 쿠버네티스가 다양한 스토리지 백엔드를 통합된 방식으로 사용할 수 있게 해준다. CSI는 CNCF(Cloud Native Computing Foundation)와 다양한 벤더들이 협력해서 만든 스토리지 플러그인 표준이다.
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 Driver | 실제 스토리지와 연동되는 플러그인. 벤더가 개발 |
| Node Plugin | 노드에 설치되어 볼륨을 attach/mount |
| Controller Plugin | 프로비저닝/삭제 등의 중앙 관리 역할 수행 |
| External Provisioner | PVC 요청 시 Volume을 생성하도록 CSI 드라이버 호출 |
| External Attacher | PV가 Pod에 attach 될 때 사용 |
| External Resizer | PVC 사이즈가 변경될 때 CSI 드라이버 호출 |
| External Snapshotter | 스냅샷 생성을 위한 컴포넌트 |
| 스토리지 벤더 | CSI 드라이버 이름 | 설명 |
|---|---|---|
| AWS EBS | ebs.csi.aws.com | Amazon Elastic Block Store (블록 스토리지) |
| AWS FSx for Lustre | fsx.csi.aws.com | 고성능 병렬 파일 시스템 |
| AWS EFS | efs.csi.aws.com | Elastic File System (다중 Pod 접근용 파일 스토리지) |
| GCP PD | pd.csi.storage.gke.io | Google Persistent Disk (블록 스토리지) |
| GCP Filestore | filestore.csi.storage.gke.io | GCP의 NFS 기반 파일 공유 스토리지 |
| Azure Disk | disk.csi.azure.com | Azure Managed Disk (블록 스토리지) |
| Azure File | file.csi.azure.com | Azure Files (SMB 기반 공유 파일 스토리지) |
| Ceph RBD | rbd.csi.ceph.com | Ceph 블록 스토리지 |
| CephFS | cephfs.csi.ceph.com | Ceph 분산 파일 시스템 |
| Longhorn | driver.longhorn.io | Rancher에서 만든 소형 분산 블록 스토리지 |
| OpenEBS Jiva | jiva.csi.openebs.io | OpenEBS의 로컬 볼륨 엔진 |
| OpenEBS Mayastor | io.openebs.csi-mayastor | NVMe 최적화 CSI 드라이버 |
| Portworx | pxd.portworx.com | 고성능, 엔터프라이즈용 분산 블록 스토리지 |
| PowerFlex (Dell) | csi-vxflexos.dellemc.com | Dell EMC의 PowerFlex용 CSI |
| PowerScale (Dell) | csi-isilon.dellemc.com | Dell EMC의 NAS용 스토리지 (Isilon 기반) |
| NetApp Trident | csi.trident.netapp.io | NetApp 전용 CSI, ONTAP/Cloud Volumes 지원 |
| VMware vSphere | csi.vsphere.vmware.com | vSphere 환경용 블록 스토리지 CSI |
| NFS | nfs.csi.k8s.io | 범용 NFS 마운트용 CSI |
| HostPath (테스트용) | csi-hostpath | 개발/테스트용 단일 노드 파일 저장소 |
| 드라이버 | 용도 | 특징 | 적합한 환경 |
|---|---|---|---|
| Longhorn | 로컬 디스크 기반 분산 스토리지 | - Rancher에서 개발 - GUI 제공 - 경량 SDS | 단일 노드 or 소규모 쿠버네티스 |
| Ceph-CSI | 블록/파일 스토리지 | - RBD, CephFS 지원 - 대용량 분산 - 복제, 스냅샷 강력 | 중대형 쿠버네티스, On-prem |
| AWS EBS CSI | AWS 블록 스토리지 | - EBS와 자동 연동 - AZ 간 이동은 제한적 | 퍼블릭 클라우드 (AWS) |
| GCP PD CSI | GCP 퍼시스턴트 디스크 | - GKE와 최적화 - 디스크 타입, 스냅샷 지원 | GCP 기반 |
| NFS CSI | NFS 파일 시스템 | - 여러 Pod에서 동시에 마운트 가능 - 단순 설정 | 파일 공유 목적 |
| PowerFlex CSI | Dell SDS | - 고성능 스토리지 - MDM/SDC 구성 필요 | 대형 엔터프라이즈 환경 |
| OpenEBS | 로컬 디스크 기반 블록 스토리지 | - 로컬/Replica 가능 - 다양한 엔진 (Jiva, cStor, Mayastor) | 로컬 디스크 활용 목적 |
| Cinder CSI | OpenStack 블록 스토리지 | - Cinder와 연동 - 하이브리드 인프라에 적합 | OpenStack 연동 필요 시 |
| 구성 | 설명 |
|---|---|
| StorageClass | 어떤 CSI 드라이버를 쓸지 지정 |
| CSI Driver | 백엔드 볼륨을 컨트롤 |
| PVC | 사용자가 요청한 저장소 사양 (크기, 접근모드 등) |
| Pod | 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, 소규모 SaaS | csi-hostpath, Longhorn, OpenEBS | 설치 간단, 가벼움 |
| 중규모 | 10~100개 | 수백~천 단위 | 내부 시스템, 중형 서비스 | Longhorn, Ceph-CSI, NFS-CSI | RWX 공유 필요 시 NFS, Ceph 적합 |
| 대규모 | 100개 이상 | 수천~수만 | 금융/통신, 대규모 SaaS, 퍼블릭 클라우드 | Ceph-CSI, PowerFlex, Portworx, Cloud Provider CSI | 확장성과 성능 고려 필요 |
CSI 드라이버 개발자나 스토리지 벤더 입장에서 "대규모"란 단순히 노드 수가 아니라 얼마나 많은 PVC가 빠르게 반복 생성/삭제되는지, 얼마나 높은 IOPS/Throughput이 필요한지, 얼마나 빠르게 장애 복구가 필요한지 “운영의 복잡도와 규모”를 기준으로 판단한다.
| 항목 | 소규모 | 중규모 | 대규모 |
|-----------------------|----------------------|--------------------------|----------------------------------------------------|
| 스토리지 성능 (IOPS) | 수백~천 | 수천~만 | 수만 이상 |
| 스냅샷/복제 빈도 | 낮음 | 중간 | 높음 (시간 단위 자동화) |
| PVC 생성 속도 요구 | 느려도 OK | 빠르면 좋음 | 매우 민감 (초 단위 요청 대응 필요) |
| 볼륨 공유 방식 | 단일 Pod ↔ Volume | 공유 필요 | 고밀도 공유, 동시성 고려 |
| 스토리지 HA 필요성 | 없어도 가능 | 기본 수준 | 매우 중요 (RAID, 복제, 장애복구 필수) |
| 스토리지 백엔드 예시 | Longhorn, NFS | Ceph, OpenEBS | PowerFlex, Portworx, EBS/Azure Disk at Scale |
소규모
중규모
대규모
Longhorn은 소형/개발용 쿠버네티스에 적합하고, 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, 소규모 운영 | 금융, 통신, 대기업 핵심 서비스 |
| 고려 사항 | Longhorn | PowerFlex |
|---|---|---|
| 장비가 없는데 테스트 가능? | 가능 (VM 기반으로 쉽게 설치 가능) | 어려움 (Dell 전용 HW 필요) |
| 다수의 PVC 요청 동시 처리? | 가능하나 성능 저하 우려 있음 | 고성능 구조로 높은 동시성 처리 가능 |
| 백업/복구 기능? | 내장된 백업 기능 제공 (S3 연동 등) | 강력한 스냅샷, 복제, 재해복구(DR) 기능 지원 |
| 스토리지 장애 대응? | Replica 수에 따라 제한적 복원 | MDM+SDS 구조로 고가용성 및 자가 복구 능력 탁월 |
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 설정 가능
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) | 클러스터 전체의 메타데이터와 제어를 담당 |
| Gateway | REST API 또는 PowerFlex 관리 UI가 동작하는 엔드포인트 |
| PowerFlex CSI | 쿠버네티스에서 PowerFlex 볼륨을 연결해주는 CSI 드라이버 |