HPC & GPU Engineering/AI Infrastructure Engineer

[HPC/GPU 클러스터 운영 Zero to Hero 38편] K8s CSI Driver로 HPC 스토리지 연동하기 – 컨테이너 워크로드와 고성능 스토리지의 연결

ygtoken 2025. 8. 12. 10:54
728x90

 

왜 Kubernetes에 HPC 스토리지를 연결해야 하는가

 
HPC와 AI 환경에서 Kubernetes(K8s)를 활용하는 사례가 늘고 있습니다.
 

  • AI/ML 파이프라인: Kubeflow, MLflow, Argo Workflows
  • 분산 컴퓨팅: Spark on K8s, Ray, Dask
  • HPC Batch 처리: Volcano, Kueue

 
이러한 워크로드가 Lustre, BeeGFS, MinIO, Ceph와 같은 HPC 스토리지를 직접 활용하려면 CSI(Container Storage Interface) Driver가 필요합니다.
CSI Driver는 Kubernetes와 스토리지 시스템을 연결하는 표준 API로, 클러스터 내부에서 Persistent Volume(PV)·Persistent Volume Claim(PVC)을 통해 스토리지를 마운트할 수 있게 합니다.
 


 

CSI Driver의 개념과 동작 원리

 
구성 요소

  • Controller Plugin: PV/PVC 생성·삭제 등 스토리지 제어 API 처리
  • Node Plugin: 워크로드가 실행되는 노드에 스토리지를 마운트/언마운트
  • External Provisioner: 동적 프로비저닝 지원

 
동작 흐름

  1. 사용자가 PVC 생성
  2. Controller Plugin이 스토리지에 볼륨 생성 요청
  3. Node Plugin이 해당 볼륨을 Pod에 마운트
  4. Pod가 스토리지에 접근 가능

 


 

HPC 환경에서 활용 가능한 CSI Driver 예시

스토리지CSI Driver특징
Lustrelustre-csi-driver고성능 병렬 파일 시스템, POSIX
BeeGFSbeegfs-csi-driver유연한 HPC 병렬 스토리지
Cephceph-csi블록(RBD), 파일(CephFS), 오브젝트(RGW) 지원
MinIOS3 Gateway + csi-s3오브젝트 스토리지, S3 API 기반

 


 

Ceph CSI Driver 설치 예시

1. Helm Chart 설치

helm repo add ceph-csi https://ceph.github.io/csi-charts
helm install ceph-csi-rbd ceph-csi/ceph-csi-rbd

 
2. StorageClass 생성

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: ceph-rbd
provisioner: rbd.csi.ceph.com
parameters:
  clusterID: <cluster-id>
  pool: rbd
  imageFeatures: layering
reclaimPolicy: Delete
mountOptions:
  - discard

 
3. PVC 생성

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: ceph-pvc
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: ceph-rbd
  resources:
    requests:
      storage: 100Gi

 


 

Lustre CSI Driver 설치 예시

 
1. 설치

kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/csi-driver-lustre/master/deploy/kubernetes/lustre-csi-driver.yaml

 
2. StorageClass 예시

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: lustre-sc
provisioner: lustre.csi.fluid.io
parameters:
  mountpoint: 10.0.0.5@tcp:/lustre

 


 

K8s 워크로드에서 HPC 스토리지 사용하기

apiVersion: v1
kind: Pod
metadata:
  name: gpu-train
spec:
  containers:
  - name: trainer
    image: nvcr.io/nvidia/pytorch:24.01-py3
    volumeMounts:
    - name: dataset
      mountPath: /data
  volumes:
  - name: dataset
    persistentVolumeClaim:
      claimName: ceph-pvc

 

  • Pod가 /data 경로로 HPC 스토리지에 직접 접근
  • 대규모 학습 데이터셋을 병렬 파일 시스템·오브젝트 스토리지에서 바로 사용 가능

 


 

성능 최적화 포인트

 

  1. 네트워크
    • InfiniBand, 100/200/400G Ethernet 적극 활용
    • RDMA 지원 여부 확인 (특히 Ceph RBD, BeeGFS)
  2. 스토리지 파라미터
    • Stripe Count/Size 조정(Lustre, BeeGFS)
    • Erasure Coding·Replication Factor 최적화(Ceph, MinIO)
  3. Pod 스케줄링
    • Node Affinity로 스토리지와 가까운 노드에 배치
    • Topology-aware CSI 설정

 


 

운영 시 주의사항

  • CSI Driver와 스토리지 버전 호환성 반드시 확인
  • 노드 플러그인이 장애나 재시작 시, 볼륨 마운트 상태 점검 필요
  • 성능 테스트(fio, ioping)로 마운트 성능 검증 후 워크로드 투입

 


 

산업별 적용 사례

  • AI 연구소: Ceph RGW + S3 CSI로 Kubeflow 데이터 파이프라인 구성
  • 제약·바이오 HPC: Lustre CSI로 대규모 유전체 분석 데이터 처리
  • 제조·시뮬레이션: BeeGFS CSI로 시뮬레이션 결과를 다수의 Pod에서 공유

 


 

장점과 단점

 
장점

  • Kubernetes 네이티브 방식으로 HPC 스토리지 활용
  • 동적 프로비저닝으로 스토리지 관리 자동화
  • 멀티 테넌트 환경에 유연하게 대응

 
단점

  • 초기 구성 복잡도 높음
  • 고성능 스토리지 네트워크 튜닝 필요
  • 일부 HPC 스토리지는 CSI Driver 공식 지원 부족

 


 

정리하며

 
K8s CSI Driver는 HPC 스토리지와 컨테이너 워크로드를 연결하는 핵심 브릿지입니다.
POSIX 병렬 파일 시스템부터 S3 오브젝트 스토리지까지, 적절한 CSI Driver를 선택해 Kubernetes 환경에 통합하면
대규모 데이터셋을 클라우드 네이티브 워크플로우에서 원활하게 활용할 수 있습니다.
 
 

728x90