이 페이지 개선에 도움 주기
이 사용자 가이드에 기여하려면 모든 페이지의 오른쪽 창에 있는 GitHub에서 이 페이지 편집 링크를 선택합니다.
스토리지 클래스 생성
Amazon EKS 자동 모드의 StorageClass
는 애플리케이션이 영구 스토리지를 요청할 때 Amazon EBS 볼륨이 자동으로 프로비저닝되는 방식을 정의합니다. 이 페이지에서는 Amazon EKS 자동 모드와 함께 작동하여 EBS 볼륨을 프로비저닝하는 StorageClass
를 생성하고 구성하는 방법을 설명합니다.
StorageClass
를 구성하여 볼륨 유형, 암호화, IOPS 및 기타 스토리지 파라미터를 포함하여 EBS 볼륨에 대한 기본 설정을 지정할 수 있습니다. 암호화 관리에 AWS KMS 키를 사용하도록 StorageClass
를 구성할 수도 있습니다.
EKS 자동 모드는 StorageClass
를 생성하지 않습니다. EKS 자동 모드의 스토리지 기능을 사용하려면 ebs.csi.eks.amazonaws.com
을 참조하는 StorageClass
를 생성해야 합니다.
첫째, storage-class.yaml
라는 이름의 파일을 만듭니다.
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
핵심 구성 요소:
-
provisioner: ebs.csi.eks.amazonaws.com
-EKS Auto Mode를 사용합니다. -
volumeBindingMode: WaitForFirstConsumer
-포드에 필요할 때까지 볼륨 생성을 지연합니다. -
type: gp3
-EBS 볼륨 유형을 지정합니다. -
encrypted: "true"
- EBS는StorageClass
를 사용하여 생성된 모든 볼륨을 암호화합니다. EBS는 기본aws/ebs
키 별칭을 사용합니다. 자세한 내용은 Amazon EBS 사용 설명서의 How Amazon EBS encryption works을 참조하세요. 이 값은 선택 사항이지만 권장됩니다. -
storageclass.kubernetes.io/is-default-class: "true"
-영구 볼륨 클레임에서 다른 볼륨 클래스를 지정하지 않는 한 Kubernetes는 기본적으로 이 스토리지 클래스를 사용합니다. 이 값은 선택 사항입니다. 다른 스토리지 컨트롤러에서 마이그레이션하는 경우 이 값을 설정할 때 주의하세요.
자체 관리형 KMS 키를 사용하여 EBS 볼륨 암호화
자체 관리형 KMS 키를 사용하여 EKS Auto Mode로 자동화된 EBS 볼륨을 암호화하려면 다음을 수행해야 합니다.
-
자체 관리형 KMS 키를 생성합니다.
-
자세한 내용은 KMS 사용 설명서의 Create a symmetric encryption KMS key 또는 How Amazon Elastic Block Store (Amazon EBS) uses KMS을 참조하세요.
-
-
KMS 키에 대한 액세스를 허용하는 새 정책을 생성합니다.
-
아래의 샘플 IAM 정책을 사용하여 정책을 생성합니다. 새 자체 관리형 KMS 키의 ARN을 삽입합니다. 자세한 내용은 AWS IAM 사용 설명서의 Creating roles and attaching policies (console)을 참조하세요.
-
-
정책을 EKS 클러스터 역할에 연결합니다.
-
AWS 콘솔을 사용하여 EKS 클러스터 역할의 ARN을 찾습니다. 역할 정보는 개요 섹션에 표시됩니다. 자세한 내용은 Amazon EKS 클러스터 IAM 역할 섹션을 참조하세요.
-
-
parameters.kmsKeyId
필드에서 KMS 키 ID를 참조하도록StorageClass
를 업데이트합니다.
샘플 자체 관리형 KMS IAM 정책
아래 정책에서 다음 값을 업데이트합니다.
-
<account-id>
- AWS 계정 ID(예:111122223333
) -
<aws-region>
- 클러스터의 AWS 리전(예:us-west-2
)
{ "Version": "2012-10-17", "Id": "key-auto-policy-3", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<account-id>:root" }, "Action": "kms:*", "Resource": "*" }, { "Sid": "Allow access through EBS for all principals in the account that are authorized to use EBS", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:CallerAccount": "<account-id>", "kms:ViaService": "ec2.<aws-region>.amazonaws.com" } } } ] }
샘플 자체 관리형 KMS StorageClass
parameters: type: gp3 encrypted: "true" kmsKeyId: <custom-key-arn>
StorageClass
파라미터 참조
Kubernetes StorageClass
리소스에 대한 일반적인 내용은 Kubernetes 설명서의 Storage Classes
StorageClass
리소스의 parameters
섹션은 AWS와 관련이 있습니다. 다음 표를 이용하여 사용 가능한 옵션을 검토하세요.
파라미터 | 값 | Default | 설명 |
---|---|---|---|
"csi.storage.k8s.io/fstype" |
xfs, ext2, ext3, ext4 |
ext4 |
볼륨 생성 중에 형식을 지정할 파일 시스템 유형입니다. 이 파라미터는 대소문자를 구분합니다. |
"type" |
io1, io2, gp2, gp3, sc1, st1, standard, sbp1, sbg1 |
gp3 |
EBS 볼륨 유형. |
"iopsPerGB" |
GiB당 초당 I/O 작업. IO1, IO2, GP3 볼륨에 대해 지정할 수 있습니다. |
||
"allowAutoIOPSPerGBIncrease" |
true, false |
false |
|
"iops" |
초당 I/O 작업. IO1, IO2, GP3 볼륨에 대해 지정할 수 있습니다. |
||
"throughput" |
125 |
처리량 단위는 MiB/s입니다. gp3 볼륨 유형이 지정된 경우에만 유효합니다. |
|
"encrypted" |
true, false |
false |
볼륨이 암호화되어야 하는지 여부입니다. 유효한 값은 "true" 또는 "false"입니다. |
"blockExpress" |
true, false |
false |
io2 Block Express 볼륨 생성을 활성화합니다. |
"kmsKeyId" |
볼륨을 암호화할 때 사용할 키의 전체 ARN입니다. 지정하지 않으면 AWS는 볼륨이 있는 리전에 기본 KMS 키를 사용합니다. 변경하지 않으면 |
||
"blockSize" |
기본 파일 시스템을 포맷할 때 사용할 블록 크기입니다. Linux 노드와 fstype |
||
"inodeSize" |
기본 파일 시스템을 포맷할 때 사용할 inode 크기입니다. Linux 노드와 fstype |
||
"bytesPerInode" |
기본 파일 시스템을 포맷할 때 사용할 |
||
"numberOfInodes" |
기본 파일 시스템을 포맷할 때 사용할 |
||
"ext4BigAlloc" |
true, false |
false |
|
"ext4ClusterSize" |
|
자세한 내용은 GitHub의 AWS EFS CSI 드라이버
고려 사항
참고
EKS Auto Mode 노드의 EKS Auto Mode StorageClasses에 따라 워크로드만 배포할 수 있습니다. 노드 유형이 혼합된 클러스터가 있는 경우 EKS Auto Mode 노드에서만 실행되도록 워크로드를 구성해야 합니다. 자세한 내용은 EKS Auto Mode 노드에 워크로드 배포 여부 제어 섹션을 참조하세요.
EKS Auto Mode의 블록 스토리지 기능은 EBS CSI 드라이버와 다릅니다.
-
정적 프로비저닝
-
EKS Auto Mode에서 외부에서 생성된 EBS 볼륨을 사용하려면 키
eks:eks-cluster-name
와 클러스터 이름의 값이 포함된 AWS 태그를 수동으로 추가해야 합니다.
-
-
노드 시작 테인트
-
노드 시작 테인트 기능을 사용하여 스토리지 기능 준비 전에 포드 예약을 방지할 수 없습니다.
-
-
동적으로 프로비저닝된 볼륨의 사용자 지정 태그
-
추가 태그 CLI 플래그를 사용하여 동적으로 프로비저닝된 EBS 볼륨에 사용자 지정 태그를 구성할 수 없습니다.
-
StorageClass
태깅을 사용하여 사용자 지정 태그를 추가할 수 있습니다. EKS Auto Mode는 연결된 AWS 리소스에 태그를 추가합니다. 사용자 지정 태그에 대한 클러스터 IAM 역할을 업데이트해야 합니다. 자세한 내용은 EKS Auto 리소스에 대한 사용자 지정 AWS 태그 섹션을 참조하세요.
-
-
EBS 세부 성능 지표
-
EBS 세부 성능에 대한 Prometheus 지표에 액세스할 수 없습니다.
-
CSI 스냅샷 컨트롤러 추가 기능 설치
EKS Auto Mode는 CSI 스냅샷 컨트롤러 Amazon EKS 추가 기능과 호환됩니다.
AWS에서는 이 추가 기능을 내장 system
노드 풀에서 실행하도록 구성할 것을 제안합니다.
자세한 내용은 다음을 참조하세요.
시스템 노드 풀에 스냅샷 컨트롤러를 설치하려면
-
AWS 콘솔에서 EKS 클러스터 열기
-
추가 기능 탭에서 추가 기능 더 가져오기를 선택합니다.
-
CSI 스냅샷 컨트롤러와 다음을 차례로 선택합니다.
-
선택한 추가 기능 설정 구성 페이지에서 선택적 구성 설정을 선택하여 추가 기능 구성 스키마를 확인합니다.
-
스냅샷 컨트롤러를
system
노드 풀과 연결하려면 다음 yaml을 삽입합니다. 스냅샷 컨트롤러에는CriticalAddonsOnly
테인트에 대한 허용치가 포함됩니다.{ "nodeSelector": { "karpenter.sh/nodepool": "system" } }
-
다음을 선택합니다.
-
-
추가 기능 구성을 검토한 다음 생성을 선택합니다.