このページの改善にご協力ください
このユーザーガイドに貢献するには、すべてのページの右側のペインにある「GitHub でこのページを編集する」リンクを選択してください。
ストレージクラスを作成する
Amazon EKS Auto Mode の StorageClass は、アプリケーションが永続的ストレージをリクエストしたときの Amazon EBS ボリュームを自動的にプロビジョニングする方法を定義します。このページでは、Amazon EKS Auto Mode で動作する StorageClass を作成して設定し、EBS ボリュームをプロビジョニングする方法について説明します。
StorageClass を設定することで、ボリュームタイプ、暗号化、IOPS、その他のストレージパラメータなど、EBS ボリュームのデフォルト設定を指定できます。暗号化管理に AWS KMS キーを使用するように StorageClass を設定することもできます。
EKS Auto Mode では、お客様用の StorageClass は作成されません。EKS Auto Mode のストレージ機能を使用するには、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" allowedTopologies: - matchLabelExpressions: - key: eks.amazonaws.com/compute-type values: - auto 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.rproxy.goskope.com- EKS Auto Mode を使用する -
allowedTopologies-matchLabelExpressionsをeks.amazonaws.com/compute-type:autoに一致するように指定した場合、自動モードを使用してポッドに必要なボリュームを自動的にプロビジョニングするようにすれば、そのポッドは自動以外のノードにスケジュールされなくなります。 -
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 ユーザーガイド」の「ロールの作成とポリシーのアタッチ (コンソール)」を参照してください。
-
-
ポリシーを 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 ドキュメントの「ストレージクラス
StorageClass リソースの parameters セクションは AWS に固有です。次の表を使用して使用可能なオプションを確認してください。
| パラメータ | 値 | デフォルト | 説明 |
|---|---|---|---|
|
「csi.storage.k8s.io/fstype」 |
xfs、ext2、ext3、ext4 |
ext4 |
ボリュームの作成時にフォーマットされるファイルシステムタイプ。このパラメータは大文字と小文字が区別されます。 |
|
「type」 |
io1、io2、gp2、gp3、sc1、st1、standard、sbp1、sbg1 |
gp3 |
EBS ボリュームタイプ。 |
|
「iopsPerGB」 |
GiB ごとの 1 秒あたりの I/O オペレーション回数秒。IO1、IO2、GP3 ボリュームで指定できます。 |
||
|
「allowAutoIOPSPerGBIncrease」 |
true、false |
false |
|
|
「iops」 |
1 秒あたりの I/O オペレーション回数。IO1、IO2、GP3 ボリュームで指定できます。 |
||
|
「throughput」 |
125 |
単位 MiB/秒でのスループット。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 EBS CSI Driver
考慮事項
注記
EKS オートモードノードの EKS オートモード StorageClasses に依存するワークロードのみをデプロイできます。ノードのタイプが混在するクラスターがある場合は、ワークロードを EKS オートモードノードでのみ実行するように設定する必要があります。詳細については、「ワークロードが 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 スナップショットコントローラー]、[次へ] の順に選択します
-
[選択したアドオン設定を構成する] ページで、[オプションの設定] を選択して [アドオン設定スキーマ] を表示します
-
次の yaml を挿入して、スナップショットコントローラーを
systemノードプールに関連付けます。スナップショットコントローラーには、CriticalAddonsOnlyテイントの許容が含まれています。{ "nodeSelector": { "karpenter.sh/nodepool": "system" } } -
[次へ] を選択します
-
-
アドオン設定を確認し、[作成] を選択します