Storage ResourceQuota는 네임스페이스 단위로 스토리지 리소스 사용을 제한합니다. PVC 수와 총 스토리지 용량을 제어할 수 있습니다.
Storage ResourceQuota 예제
스토리지 클래스별 쿼터
쿼터 사용량 확인
LimitRange와 함께 사용
EKS에서의 스토리지 옵션
Amazon EKS에서는 다양한 스토리지 옵션을 사용할 수 있습니다. 각 옵션은 서로 다른 사용 사례와 성능 특성을 가지고 있으므로, 애플리케이션의 요구 사항에 맞는 적절한 스토리지를 선택하는 것이 중요합니다.
Amazon EBS
Amazon EBS(Elastic Block Store)는 EC2 인스턴스에 연결할 수 있는 블록 스토리지 볼륨을 제공합니다. EKS에서는 EBS CSI 드라이버를 사용하여 EBS 볼륨을 Kubernetes 포드에 마운트할 수 있습니다.
EBS CSI 드라이버 설치
EBS 스토리지 클래스
EBS 볼륨 유형
Amazon EBS는 다양한 볼륨 유형을 제공합니다:
gp3: 범용 SSD 볼륨으로, 대부분의 워크로드에 적합합니다. 기본 3,000 IOPS와 125MB/s의 처리량을 제공하며, 추가 비용으로 최대 16,000 IOPS와 1,000MB/s까지 확장할 수 있습니다.
io2: 고성능 SSD 볼륨으로, 높은 IOPS가 필요한 워크로드에 적합합니다. GiB당 최대 500 IOPS를 제공하며, 최대 64,000 IOPS까지 확장할 수 있습니다.
st1: 처리량 최적화 HDD 볼륨으로, 빅데이터, 데이터 웨어하우스, 로그 처리 등의 처리량 집약적 워크로드에 적합합니다.
sc1: 콜드 HDD 볼륨으로, 자주 액세스하지 않는 데이터에 적합합니다.
EBS 스토리지 클래스 예제 (gp3)
EBS 스토리지 클래스 예제 (io2)
Amazon EFS
Amazon EFS(Elastic File System)는 여러 EC2 인스턴스에서 동시에 액세스할 수 있는 확장 가능한 파일 스토리지를 제공합니다. EFS는 ReadWriteMany 액세스 모드를 지원하므로 여러 포드에서 동일한 볼륨을 공유해야 하는 경우에 유용합니다.
EFS CSI 드라이버 설치
EFS 파일 시스템 생성
EFS 파일 시스템을 생성하려면 AWS Management Console, AWS CLI 또는 AWS CloudFormation을 사용할 수 있습니다.
AWS CLI를 사용한 예제:
EFS 스토리지 클래스
EFS 액세스 포인트를 사용한 PV 및 PVC
EFS 성능 모드
EFS는 두 가지 성능 모드를 제공합니다:
General Purpose: 대부분의 파일 시스템 워크로드에 권장되는 기본 모드입니다. 낮은 지연 시간을 제공합니다.
Max I/O: 높은 처리량과 병렬 처리가 필요한 워크로드에 적합합니다. 지연 시간이 약간 더 길지만, 더 높은 처리량을 제공합니다.
EFS 처리량 모드
EFS는 세 가지 처리량 모드를 제공합니다:
Bursting: 파일 시스템 크기에 따라 기본 처리량이 할당되고, 버스트 크레딧을 사용하여 일시적으로 더 높은 처리량을 제공합니다.
Provisioned: 파일 시스템 크기와 관계없이 지정된 처리량을 제공합니다.
Elastic: 워크로드에 따라 자동으로 처리량을 확장하고 축소합니다.
Amazon FSx for Lustre
Amazon FSx for Lustre는 고성능 컴퓨팅 워크로드를 위한 고성능 파일 시스템을 제공합니다. FSx for Lustre는 대규모 데이터 처리, 기계 학습, 분석 등의 워크로드에 적합합니다.
FSx for Lustre CSI 드라이버 설치
FSx for Lustre 파일 시스템 생성
AWS CLI를 사용한 예제:
FSx for Lustre 스토리지 클래스
FSx for Lustre 배포 유형
FSx for Lustre는 세 가지 배포 유형을 제공합니다:
SCRATCH_1: 임시 스토리지와 단기 처리를 위한 가장 저렴한 옵션입니다. 데이터 복제가 없으므로 내구성이 낮습니다.
SCRATCH_2: SCRATCH_1보다 높은 버스트 처리량을 제공하며, 서버 장애 시 데이터를 자동으로 복구합니다.
PERSISTENT: 장기 스토리지와 처리량이 필요한 워크로드에 적합합니다. 데이터 복제와 자동 복구 기능을 제공합니다.
FSx for Lustre 스토리지 용량 및 처리량
FSx for Lustre의 스토리지 용량과 처리량은 다음과 같이 구성됩니다:
스토리지 용량: 최소 1.2 TiB부터 시작하며, 2.4 TiB 단위로 증가합니다.
처리량: 배포 유형과 스토리지 용량에 따라 결정됩니다.
SCRATCH_2: 스토리지 TiB당 200 MB/s 또는 1,000 MB/s
PERSISTENT: 스토리지 TiB당 50 MB/s, 100 MB/s 또는 200 MB/s
vLLM 워크로드를 위한 FSx for Lustre 구성
vLLM(Vector Language Model)과 같은 대규모 AI 모델 워크로드는 높은 처리량과 낮은 지연 시간을 가진 스토리지가 필요합니다. FSx for Lustre는 이러한 요구 사항을 충족하는 이상적인 솔루션입니다.
vLLM을 위한 FSx for Lustre 스토리지 클래스
vLLM 워크로드를 위한 PVC
vLLM 배포 예제
vLLM 성능 최적화 팁
적절한 처리량 선택: vLLM 워크로드의 경우 TiB당 최소 200 MB/s의 처리량을 선택하는 것이 좋습니다.
스토리지 용량 최적화: 모델 크기와 데이터셋 크기를 고려하여 충분한 스토리지 용량을 할당합니다.
네트워크 최적화: FSx for Lustre 파일 시스템과 EKS 노드가 동일한 가용 영역에 있는지 확인합니다.
인스턴스 유형 선택: GPU 인스턴스(예: g5.12xlarge)를 사용하여 vLLM 워크로드의 성능을 최적화합니다.
메모리 구성: 모델 크기에 따라 충분한 메모리를 할당합니다.
파일 시스템 마운트 옵션: 최적의 성능을 위해 적절한 마운트 옵션을 사용합니다.
스토리지 옵션 비교
스토리지 옵션
액세스 모드
사용 사례
성능
비용
확장성
Amazon EBS
ReadWriteOnce
단일 포드에서 사용하는 블록 스토리지
중간-높음
중간
제한적 (단일 노드)
Amazon EFS
ReadWriteMany
여러 포드에서 공유하는 파일 스토리지
중간
중간-높음
높음 (여러 노드)
Amazon FSx for Lustre
ReadWriteMany
고성능 컴퓨팅, 기계 학습, 분석
매우 높음
높음
매우 높음 (병렬 액세스)
EKS 스토리지 선택 가이드
단일 포드에서 사용하는 블록 스토리지가 필요한 경우: Amazon EBS
데이터베이스
상태 저장 애플리케이션
단일 노드에서 실행되는 워크로드
여러 포드에서 공유하는 파일 스토리지가 필요한 경우: Amazon EFS
웹 서버 콘텐츠
공유 구성 파일
중간 규모의 데이터 처리
고성능 파일 스토리지가 필요한 경우: Amazon FSx for Lustre
대규모 데이터 처리
기계 학습 및 AI 워크로드 (vLLM 등)
고성능 컴퓨팅 (HPC)
빅데이터 분석
결론
이 장에서는 Kubernetes의 스토리지 개념에 대해 알아보았습니다. 볼륨은 포드 내의 컨테이너가 데이터를 저장하고 공유할 수 있는 방법을 제공하고, 퍼시스턴트 볼륨과 퍼시스턴트 볼륨 클레임은 포드와 독립적인 수명 주기를 가진 스토리지를 제공합니다. 스토리지 클래스는 동적 프로비저닝을 통해 사용자가 필요할 때 스토리지를 요청할 수 있게 합니다.
EKS에서는 Amazon EBS, Amazon EFS, Amazon FSx for Lustre 등 다양한 스토리지 옵션을 사용할 수 있으며, 각 옵션은 서로 다른 사용 사례와 성능 특성을 가지고 있습니다. 특히 vLLM과 같은 대규모 AI 모델 워크로드의 경우, 높은 처리량과 낮은 지연 시간을 제공하는 FSx for Lustre가 이상적인 선택입니다. FSx for Lustre는 병렬 파일 시스템으로, 여러 노드에서 동시에 데이터에 액세스할 수 있어 대규모 모델 학습 및 추론 작업에 적합합니다.
애플리케이션의 요구 사항에 맞는 적절한 스토리지 옵션을 선택하는 것이 중요합니다. 단일 포드에서 사용하는 블록 스토리지가 필요한 경우 Amazon EBS를, 여러 포드에서 공유하는 파일 스토리지가 필요한 경우 Amazon EFS를, 고성능 파일 스토리지가 필요한 경우 Amazon FSx for Lustre를 선택하는 것이 좋습니다.