Kubernetes

Amazon EBS CSI driver

DevelopC 2022. 9. 19. 17:05
728x90

Amazon EBS CSI driver

kubernetes에서 AWS EBS 사용을 위해 기본적으로 제공하는 storage class 타입은 io1, gp2, sc1, st1 입니다. gp3, io2 타입의 EBS를 사용하기 위해서 Amazon EBS CSI driver 를 설치해야합니다. EKS 1.23 버전부터는 무조건 EBS CSI Driver만 사용해야합니다.

Install

helm을 사용하여 설치합니다. AWS의 IAM Role을 생성하고, policy 를 참고하여 권한설정을 해야합니다.

# values.yaml

controller:
  replicaCount: 3
  region: ap-northeast-2
  serviceAccount:
    create: true
    name: ebs-csi-controller-sa
    annotations:
      eks.amazonaws.com/role-arn: arn:aws:iam::${ACCOUNT_ID}:role/ebs-csi-controller

node:
  tolerateAllTaints: true

storageClasses:
  - name: gp3
    annotations:
      storageclass.kubernetes.io/is-default-class: "true"
    volumeBindingMode: WaitForFirstConsumer
    reclaimPolicy: Delete
    allowVolumeExpansion: true
    parameters:
      type: gp3
      csi.storage.k8s.io/fstype: ext4
$ helm repo add aws-ebs-csi-driver https://kubernetes-sigs.github.io/aws-ebs-csi-driver
$ helm repo update
$ helm upgrade --install aws-ebs-csi-driver \
    -n amazone-ebs \
    -f values.yaml \
    aws-ebs-csi-driver/aws-ebs-csi-driver

주의사항

AWS EBS를 PVC로 사용시 주로사용하는 gp2, gp3 타입은 여러 EC2 Instance에 연결할 수 없고, 같은 가용영역에 있는 EBS볼륨만 마운트할 수 있습니다. deployment, statefulset 사용시 아래의 코드와 같이 nodeAffinity를 사용하여, 하나의 가용영역에서만 실행할 수 있게 설정해야합니다.
affinity:
  nodeAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
      nodeSelectorTerms:
        - matchExpressions:
          - key: topology.kubernetes.io/zone
            operator: In
            values:
              - ap-northeast-2a

참고

 

GitHub - kubernetes-sigs/aws-ebs-csi-driver: CSI driver for Amazon EBS https://aws.amazon.com/ebs/

CSI driver for Amazon EBS https://aws.amazon.com/ebs/ - GitHub - kubernetes-sigs/aws-ebs-csi-driver: CSI driver for Amazon EBS https://aws.amazon.com/ebs/

github.com

 

728x90