반응형
AWS EKS에서 데이터를 저장하려면 EBS 또는 EFS를 사용해야 하며, 추가 기능(Add-on)은 필요한 경우 활성화하여 사용할 수 있습니다
- 공식문서
https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/workloads-add-ons-available-eks.html
AWS 추가 기능 - Amazon EKS
이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.
docs.aws.amazon.com
EBS,EFS CSI
특징 | EBS (Elastic Block Store) | EFS (Elastic File System) |
스토리지 타입 | 블록 스토리지 | 파일 스토리지 |
접근 모드 | 1개의 노드에서만 사용 가능 | 여러 노드에서 사용 가능 |
Multi-AZ 지원 | ❌ 불가능 (단일 AZ 전용) | ✅ 가능 (다중 AZ 지원) |
Pod가 다른 노드로 이동 시 사용 가능 여부 | ❌ 불가능 (특정 노드에 종속) | ✅ 가능 (여러 노드에서 접근 가능) |
성능 | 높은 IOPS, 지연시간 짧음 (SSD 지원) | 파일 기반, 고속 데이터 공유 가능 |
비용 | 사용한 용량만 과금 (gp3, io1 옵션으로 성능 조정 가능) |
고정 요금제 (표준, Elastic Throughput) |
Kubernetes의 서비스 계정과 자동 연결하지 않으므로 IAM OIDC 공급자와 연결하는 작업이 필수
EBS, EFS 둘 다 사전에 사용해야함
eksctl utils associate-iam-oidc-provider --cluster=my-cluster --approve
1. EKS EBS CSI
1) EKS EBS CSI 드라이버 버전 확인
aws eks describe-addon-versions \
--addon-name aws-ebs-csi-driver \
--kubernetes-version 1.26 \
--query "addons[].addonVersions[].[addonVersion, compatibilities[].defaultVersion]" \
--output text
2) EKS EBS CSI 드라이버 필수 IAM 권한 적용
- IAM 서비스 계정이 생성
- EKS Cluster 연결
- IAM Role 생성 및 연결
eksctl create iamserviceaccount \
--name ebs-csi-controller-sa \
--namespace kube-system \
--cluster my-cluster \
--role-name AmazonEKS_EBS_CSI_DriverRole \
--role-only \
--attach-policy-arn arn:aws:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy \
--approve
3) EKS EBS CSI Add-on 추가
eksctl create addon \
--name aws-ebs-csi-driver \
--cluster my-cluster \
--service-account-role-arn arn:aws:iam::976442799645:role/AmazonEKS_EBS_CSI_DriverRole \
4) EKS EBS CSI 확인
eksctl get addon --name aws-ebs-csi-driver --cluster my-cluster
5) EKS EBS Pod 확인
kubectl get pods -A | grep ebs
6) EKS EBS Storageclass 생성
- Amazon EKS Auto Mode의 StorageClass는 애플리케이션이 영구 스토리지를 요청할 때 Amazon EBS 볼륨이 자동으로 프로비저닝되는 방식
- provisioner : ebs.csi.eks.amazonaws.com #EKS Auto mode
- storageclass.kubernetes.io/is-default-class: "true" #해당 Strogaclass default 사용
- volumeBindingMode
- Immediate : pvc가 생성되면 즉시 볼륨 바인딩
- WaitForFirstConsumer : PVC는 Pod가 실제로 스케줄링될 때까지 바인딩되지 않음.
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: auto-ebs-sc
annotations:
storageclass.kubernetes.io/is-default-class: "true"
provisioner: ebs.csi.eks.amazonaws.com
volumeBindingMode: WaitForFirstConsumer
parameters:
type: gp3
encrypted: "true"
kubectl apply -f storage-class.yaml
2. EKS EFS CSI
1) EKS EFS CSI 드라이버 버전 확인
aws eks describe-addon-versions \
--addon-name aws-efs-csi-driver \
--kubernetes-version 1.26 \
--query "addons[].addonVersions[].[addonVersion, compatibilities[].defaultVersion]" \
--output text
2) EKS EFS CSI 드라이버 필수 IAM 권한 적용
- IAM 서비스 계정이 생성
- EKS Cluster 연결
- IAM Role 생성 및 연결
eksctl create iamserviceaccount \
--name efs-csi-controller-sa \
--namespace kube-system \
--cluster my-cluster \
--attach-policy-arn arn:aws:iam::aws:policy/service-role/AmazonEFSCSIDriverPolicy \
--approve \
--role-only \
--role-name AmazonEKS_EFS_CSI_DriverRole
3) EKS EFS CSI Add-on 추가
eksctl create addon --name aws-efs-csi-driver\
--cluster my-cluster \
--service-account-role-arn arn:aws:iam::"account-id":role/AmazonEKS_EFS_CSI_DriverRole\
--force
4) EKS EFS CSI Add-on 확인
eksctl get addon --cluster my-cluster
5) EKS EFS CSI Pod 확인
kubectl get daemonset -n kube-system | grep efs-csi
kubectl get pods -n kube-system | grep efs-csi
6) EKS EFS Storageclass 생성
- 예제 코드 다운로드
git clone https://github.com/kubernetes-sigs/aws-efs-csi-driver.git
cd aws-efs-csi-driver/examples/kubernetes/multiple_pods/
- EFS ID 검색
- fs-582a03f3
aws efs describe-file-systems --query "FileSystems[*].FileSystemId" --output text
- Storageclass 수정
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: efs-dp-sc
provisioner: efs.csi.aws.com
parameters:
provisioningMode: efs-ap
fileSystemId: fs-07b7d551ab0ebc7f2
directoryPerms: "700"
반응형
'AWS > EKS' 카테고리의 다른 글
AWS EFS CSI Driver 설치 가이드 (0) | 2024.12.01 |
---|---|
AWS EKS EBS CSI Driver (0) | 2024.11.08 |
AWS EKS 생성하기 (0) | 2024.11.07 |
댓글