본문 바로가기
AWS

[AWS] EBS EFS 선택 기준

by HH_g 2024. 9. 17.

EFS(Elastic File System) 와 EBS(Elastic Block Store) 는 AWS 에서 제공하는 스토리지 서비스입니다. 

목적에 따라 선택하면 되겠습니다.

 

EBS

EC2 인스턴스에 연결되는 블록 스토리지로, 각 볼륨은 특정 인스턴스에 연결되고, 파일 시스템처럼 사용됩니다.

주로 DB, 파일 시스템, 또는 애플리케이션의 데이터 저장소로 사용됩니다.

 

특징)

1. 한 번에 하나의 인스턴스에만 연결됨

2. 높은 IOPS 가 필요한 작업에 적합

3. EBS 스냅샷 기능을 통해 데이터 백업 가능

 

EFS

NFS(Network File System) 프로토콜을 사용한 파일 스토리지 서비스로, 여러 인스턴스에서 동시에 엑세스할 수 있습니다.

여러 인스턴스가 동일한 파일 시스템에 엑세스해야 하는 환경에서 유용합니다. ex) 웹 서버 or 분산된 애플리케이션

 

특징)

1. 동시 엑세스 가능

2. 자동 확장, 추가적인 설정 없이 파일 시스템 크기 늘어남

3. 사용한 만큼 비용 책정

 

EBS와 EFS의 비교

항목 EBS EFS
스토리지 유형 블록 스토리지 파일 스토리지
사용 사례 단일 인스턴스에서 사용되는 스토리지 여러 인스턴스에서 공유되는 파일 시스템
접속 가능 인스턴스 한 번에 하나의 인스턴스에만 연결 여러 인스턴스에서 동시에 접근 가능
크기 확장성 수동으로 크기 설정 자동 확장 (무한한 스토리지 제공)
비용 프로비저닝된 크기 기준 사용한 양에 따른 비용

 

 

EKS 에서 선택 기준?

EKS에서 각 파드는 EC2 인스턴스에서 실행됩니다. 

연결할 파드가 어떤 애플리케이션인지에 따라 연결할 스토리지를 결정할 수 있는데, 경험상

고성능 스토리지를 요구하는 앱(mysql, postgressql 등)이면 EBS,

여러 파드가 동시에 파일 시스템에 접근 가능해야 하면 EFS

를 선택하는게 일반적인 것 같습니다.

 

또한 여러 가용영역에서 볼륨 접근이 필요하다면 EFS 를 사용해야 합니다.

 

 

ex)

필요한 용량 가늠하기 힘듦(ex 로그 백업 중요 서비스) -> efs (자동 확장)

성능이 중요 -> ebs 

항목 EBS EFS
스토리지 유형 블록 스토리지 (Block Storage) 파일 스토리지 (File Storage)
연결 대상 단일 EC2 인스턴스 또는 Pod 여러 EC2 인스턴스 또는 Pod
사용 사례 데이터베이스, 상태 저장 애플리케이션 웹 서버, 분산 애플리케이션, 공유 파일 시스템
접속 가능 인스턴스 한 번에 하나의 인스턴스 또는 Pod에 연결 가능 여러 인스턴스 또는 Pod에서 동시에 접근 가능
확장성 크기 고정, 사용자가 수동으로 크기 조정 필요 자동 확장 (저장 용량에 따라 자동으로 확장)
성능 고성능 IOPS 제공, 고속 읽기/쓰기 가능 상대적으로 낮은 IOPS (성능이 덜 중요할 때 적합)
비용 프로비저닝된 크기 기준으로 요금 부과 사용한 용량에 따른 비용 발생
백업 EBS 스냅샷으로 백업 및 복원 지원 EFS 백업 기능 사용 가능
데이터 처리 방식 블록 단위로 데이터 처리 파일 단위로 데이터 처리
일반적인 사용 예 상태 저장 애플리케이션, 데이터베이스, 로그 저장소 웹 서버 클러스터, 분산 파일 시스템
AWS EKS에서의 사용 단일 Pod나 인스턴스에 고성능 스토리지 제공 여러 Pod 간에 파일 공유가 필요한 환경
가용 영역 하나의 AZ만 접근 가능 여러 AZ에서 접근 가능
비용 GB당 0.116$
GB당 0.33$
구현 방법 PersistentVolumeClaim (PVC)으로 블록 스토리지 사용 EFS CSI 드라이버 및 PVC로 파일 스토리지 사용

 

 

EKS 에서 연동 

두 스토리지 모두 PV, PVC 를 통해 EKS 에서 동적으로 스토리지를 프로비저닝 / 사용 가능합니다.

EBS 공식 가이드: https://docs.aws.amazon.com/eks/latest/userguide/ebs-csi.html

 

Store Kubernetes volumes with Amazon EBS - Amazon EKS

Thanks for letting us know this page needs work. We're sorry we let you down. If you've got a moment, please tell us how we can make the documentation better.

docs.aws.amazon.com

EFS 공식 가이드: https://docs.aws.amazon.com/eks/latest/userguide/efs-csi.html

 

Store an elastic file system with Amazon EFS - Amazon EKS

This step isn't needed for AWS Fargate. A Pod running on Fargate automatically mounts an Amazon EFS file system.

docs.aws.amazon.com

 

 

 

aws eks describe-addon-versions --addon-name aws-ebs-csi-driver

위 명령어로 필요한 클러스터 버전 확인 가능합니다.

 

주의)

aws cli , kubectl 버전, oidc 확인

 

1. IAM role 설정

EBS CSI 플러그인은 AWS API 콜을 위해 IAM 권한을 필요로 합니다. 

 

2. 드라이버 설치

EKS add-on 으로 설치하는 것을 권장합니다.

 

3. 실제 사용

스토리지 클래스 정의 (eks 설치하면 default sc 존재함)

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: ebs-sc
provisioner: kubernetes.io/aws-ebs
parameters:
  type: gp2  # or io1 for higher IOPS
  fsType: ext4

gp2 는 일반적인 범용 SSD 스토리지 타입이고, io1 은 높은 IOPS를 제공하는 SSD 타입입니다.

'AWS' 카테고리의 다른 글

[EKS] Python 코드로 EKS 클러스터 접근하기  (0) 2024.09.29
[AWS] Assume role  (0) 2024.09.29
[EKS 모범 사례] 스케쥴링/probe  (0) 2024.08.10
[EKS 모범 사례] - karpenter  (0) 2024.08.10
[AWS] EKS Workshop 실습  (1) 2024.08.10