Home
home

07. Amazon EKS - CSI Driver

1. CSI(Container Storage Interface) 란?

: CSI(Container Storage Interface)는 쿠버네티스와 같은 컨테이너 오케스트레이션이 다양한 스토리지 시스템과 상호 작용할 수 있도록 표준화된 인터페이스를 제공하는 기술입니다.
[Caption] CSI 소개
CSI 주요 역할
스토리지 시스템과 쿠버네티스 간의 연결을 표준화 합니다.
정적 및 동적 프로비저닝을 지원합니다.
볼륨에 대한 생성, 삭제, 스냅샷, 확장 등의 작업을 처리할 수 있습니다.
CSI 구성 요소
1.
Provisioner
[역할]
PV(Persistent Volume)을 생성하거나 삭제하는 작업을 담당합니다.
PVC(Persistent Volume Claim) 요청에 따라 스토리지 시스템에서 볼륨을 동적으로 프로비저닝합니다.
[작동 방식]
사용자가 PVC 생성
쿠버네티스가 StorageClass를 참조하여 Provisioner 호출
Provisioner가 스토리지 시스템에 API를 통해 새로운 볼륨을 생성
Provisioner가 대상 볼륨을 쿠버네티스 환경에 등록
2.
Attacher
[역할]
생성된 볼륨을 특정 노드에 연결하는 작업을 수행합니다.
클라우드 제공자나 외부 스토리지 시스템에서 볼륨을 노드에 마운트할 수 있도록 지원합니다.
[작동 방식]
Pod가 특정 노드에서 실행
Attacher가 해당 노드에 볼륨을 연결하기 위해 스토리지 시스템 API를 호출
연결이 완료되면 쿠버네티스가 이를 파드에 마운트할 준비
3.
Controller
[역할]
CSI 드라이버의 중앙 제어 역할을 수행합니다.
클러스터 수준에서 볼륨 관리 작업(생성, 삭제, 확장 등)을 처리합니다.
[작동 방식]
Controller가 Provisioner 및 Attacher와 연계하여 볼륨 생성 및 연결 작업을 조정
4.
NodeServer
[역할]
노드 수준에서 실행되며, 실제로 볼륨을 컨테이너 파일 시스템에 마운트하거나 언마운트하는 작업을 수행합니다.
[작동 방식]
Attacher가 볼륨을 노드에 연결
NodeServer가 해당 볼륨을 Pod 내 컨테이너 파일 시스템에 마운트
파드가 삭제되거나 이동될 경우
NodeServer가 이를 언마운트하고 리소스를 해제
CSI 도입에 따른 장점
새로운 스토리지 드라이버를 쿠버네티스와 독립적으로 개발 및 배포 가능합니다.
다양한 스토리지 제공자와 통합하여 유연성 및 확장성 제공합니다.
이번 포스팅은 Amazon EKS를 기준으로 CSI 드라이버를 알아봅니다.
Amazon EKS는 AWS 스토리지 서비스와 통합된 다양한 CSI 드라이버를 제공합니다.

2. Amazon EBS CSI Driver

: Amazon EBS(Elastic Block Store)를 쿠버네티스 클러스터에서 사용할 수 있도록 지원하는 CSI 드라이버입니다.
[Caption] Amazon EBS CSI Driver 구조
주요 특징
동적 프로비저닝 지원
PVC 요청 시 EBS 볼륨을 자동으로 생성합니다.
볼륨 확장 (Resizing)
인서비스 상태에서 기존 EBS 볼륨 크기 조정 가능합니다.
스냅샷 지원
볼륨 백업 및 복구가 가능합니다.
Access Mode는 ReadWriteOnce로만 설정됩니다.
EBS 볼륨 스토리지 특성 상 1:1 연결만 가능하기 때문
EBS 볼륨이 구성되는 가용 영역에 Node Affinity가 설정됩니다.
EBS 볼륨 스토리지 특성 상 1:1 연결만 가능하기 때문
구성 요소
Provisioner
Attacher
Controller-Plugin
Resizer
Snapshotter
Node-Plugin
Node-Registrar
Liveness-Probe
설치 방법
Helm Chart 또는 EKS Add-On을 통해 설치 가능
eksctl create addon --name aws-ebs-csi-driver --cluster {CLUSTER NAME}
Bash
복사
# EKS Add-On을 통한 ebs-csi-driver 설치

3. Amazon EFS CSI Driver

: Amazon EFS(Elastic File System)를 쿠버네티스 클러스터에서 사용할 수 있도록 지원하는 CSI 드라이버입니다.
[Caption] Amazon EFS CSI Driver 구조
주요 특징
동적 프로비저닝 지원
PVC 요청 시 EBS 볼륨을 자동으로 생성합니다.
Access Mode는 ReadWriteMany(다중 노드 액세스)도 설정할 수 있습니다.
EFS 파일 시스템 특성 상 1:N 연결 구조이기 때문
Node Affinity가 설정을 할 필요가 없습니다.
EFS 파일 시스템 특성 상 다수의 가용 영역에 걸쳐 데이터를 저장하기 때문
파일 확장성
페타바이트(PB) 단위로 확장 가능합니다.
리사이징이나 스냅샷 미지원
구성 요소
Provisioner
Controller-Plugin
Node-Plugin
Node-Registrar
Liveness-Probe
설치 방법
Helm Chart 또는 EKS Add-On을 통해 설치 가능
eksctl create addon --name aws-efs-csi-driver --cluster {CLUSTER NAME}
Bash
복사
# EKS Add-On을 통한 efs-csi-driver 설치

4. Amazon S3 CSI Driver

: Amazon S3(Simple Storage Service)를 쿠버네티스 클러스터에서 사용할 수 있도록 지원하는 CSI 드라이버입니다.
[Caption] Amazon S3 CSI Driver 구조
주요 특징
정적 프로비저닝만 지원
Amazon S3 버킷을 파일 시스템처럼 마운트하여 사용합니다.
해당 특징에 따라 정식 이름은 Mountpoint for Amazon S3 CSI Driver입니다.
별도의 CSI Provisioner와 Controller가 존재하지 않습니다.
정적 프로비저닝만 존재함에 따라 CSI Node만 존재
Windows 기반의 컨테이너와 AWS Fargate에서 지원하지 않습니다.
구성 요소
S3-Plugin
Node-Driver-Registrar
Liveness-Probe
설치 방법
Helm Chart 또는 EKS Add-On을 통해 설치 가능
eksctl create addon --name aws-mountpoint-s3-csi-driver --cluster {CLUSTER NAME}
Bash
복사
# EKS Add-On을 통한 mountpoint-s3-csi-driver 설치
EKS 버전에 따라 Add-On으로 지원하지 않을 수 있습니다.

5. 결론

AWS EKS는 다양한 스토리지 요구사항을 충족하기 위해 여러 CSI 드라이버(EBS, EFS, S3)를 제공합니다. 각 드라이버는 고유한 특성과 사용 사례를 가지고 있으며, 애플리케이션의 요구사항에 따라 적절한 드라이버를 선택할 수 있습니다.
EBS는 고성능 블록 스토리지가 필요한 애플리케이션에 적합합니다.
EFS는 다중 노드에서 공유 파일 시스템이 필요한 경우 이상적입니다.
S3는 데이터 백업 및 아카이빙과 같은 객체 기반 워크로드에 적합합니다.
기준
EBS CSI Driver
EFS CSI Driver
S3 CSI Driver
스토리지 유형
블록 스토리지
파일 스토리지
객체 스토리지
데이터 액세스 방식
EC2 인스턴스에 디스크로 직접 연결
다수 인스턴스에서 공유 파일 시스템
S3 버킷을 직접 마운트하여 연결
성능
낮은 지연 시간, 높은 IOPS 제공
파일 시스템 성능, 수천 개의 동시 연결 지원
높은 지연 시간 (네트워킹 종속)
확장성
단일 볼륨 크기는 최대 16TB (다수 볼륨 사용 가능)
파일 시스템 크기가 PB 규모로 자동 확장
거의 무제한 확장
사용 사례
데이터베이스, 트랙젝션 워크로드, 고성능 애플리케이션
컨테이너 스토리지, 미디어 처리, 빅데이터 분석
백업, 아카이빙, 정적 웹 호스팅, 데이터 레이크
Access Mode
ReadWriteOnce
ReadWriteOnce, ReadWriteMany, ReadOnlyMany
ReadWriteOnce, ReadWriteMany, ReadOnlyMany
프로비저닝 방식
정적 및 동적 프로비저닝
정적 및 동적 프로비저닝
정적 프로비저닝만 지원
지원 플랫폼
Linux, Windows
Linux, Windows
Linux (Windows 컨테이너나 AWS Fargate 미지원)