このページの改善にご協力ください
このユーザーガイドに貢献するには、すべてのページの右側のペインにある「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"
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 ユーザーガイド」の「ロールの作成とポリシーのアタッチ (コンソール)」を参照してください。
-
-
ポリシーを 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 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" } }
-
[次へ] を選択します
-
-
アドオン設定を確認し、[作成] を選択します