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
EFS 공식 가이드: https://docs.aws.amazon.com/eks/latest/userguide/efs-csi.html
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 |