建立儲存體方案 - Amazon EKS

協助改善此頁面

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

若要提供此使用者指南,請選擇位於每個頁面右窗格中的 GitHub 上編輯此頁面連結。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

建立儲存體方案

Amazon EKS Auto Mode StorageClass中的 定義了應用程式請求持久性儲存時,如何自動佈建 Amazon EBS 磁碟區。此頁面說明如何建立和設定 StorageClass,以使用 Amazon EKS Auto 模式佈建 EBS 磁碟區。

透過設定 StorageClass,您可以指定 EBS 磁碟區的預設設定,包括磁碟區類型、加密、IOPS 和其他儲存參數。您也可以StorageClass將 設定為使用 AWS KMS 金鑰進行加密管理。

EKS Auto Mode 不會StorageClass為您建立 。您必須建立StorageClass參考ebs.csi.eks.amazonaws.com,才能使用 EKS Auto Mode 的儲存功能。

首先,建立名為 的檔案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 模式

  • volumeBindingMode: WaitForFirstConsumer - 延遲磁碟區建立,直到 Pod 需要它

  • type: gp3 - 指定 EBS 磁碟區類型

  • encrypted: "true" - EBS 會加密使用 建立的任何磁碟區StorageClass。EBS 將使用預設aws/ebs金鑰別名。如需詳細資訊,請參閱《Amazon EBS 使用者指南》中的 Amazon EBS 加密如何運作。此值是選用的,但建議使用。

  • storageclass.kubernetes.io/is-default-class: "true" - Kubernetes 預設會使用此儲存體類別,除非您在持久性磁碟區宣告中指定不同的磁碟區類別。此值是選用的。如果您要從不同的儲存控制器遷移,請謹慎設定此值。

使用自我管理的 KMS 金鑰來加密 EBS 磁碟區

若要使用自我管理的 KMS 金鑰來加密 EKS Auto Mode 自動化的 EBS 磁碟區,您需要:

  1. 建立自我管理的 KMS 金鑰。

  2. 建立新的政策,以允許存取 KMS 金鑰。

  3. 將政策連接至 EKS 叢集角色。

    • 使用 AWS 主控台尋找 EKS 叢集角色的 ARN。角色資訊會顯示在概觀區段中。如需詳細資訊,請參閱Amazon EKS 叢集 IAM 角色

  4. 更新 StorageClass以參考 parameters.kmsKeyId 欄位中的 KMS 金鑰 ID。

自我管理 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 資源的 THe parameters區段是特定的 AWS。使用下表來檢閱可用的選項。

參數 預設 描述

"https://csi.storage.k8s.io/fstype"

xfs、ext2、ext3、ext4

ext4

磁碟區建立期間將格式化的檔案系統類型。此參數區分大小寫!

「類型」

io1、io2、gp2、gp3、sc1、st1、Standard、sbp1、sbg1

gp3

EBS 磁碟區類型。

"iopsPerGB"

每秒每個 GiB 的 I/O 操作。可以為 IO1, IO2和 GP3 磁碟區指定 。

「allowAutoIOPSPerGBIncrease」

true、false

false

當 時"true",當 iopsPerGB * <volume size> 太低而無法符合 支援的 IOPS 範圍時,CSI 驅動程式會增加磁碟區的 IOPS AWS。這可讓動態佈建一律成功,即使使用者指定太小的 PVC 容量或iopsPerGB值也一樣。另一方面,它可能會帶來額外的成本,因為此類磁碟區具有比 中請求更高的 IOPSiopsPerGB

"iops"

每秒的 I/O 操作。可以為 IO1, IO2和 GP3 磁碟區指定 。

「輸送量」

125

MiB/s 中的輸送量。只有在指定 gp3 磁碟區類型時才有效。

「加密」

true、false

false

是否應該加密磁碟區。有效值為「true」或「false」。

"blockExpress"

true、false

false

啟用建立 io2 Block Express 磁碟區。

"kmsKeyId"

加密磁碟區時要使用之金鑰的完整 ARN。如果未指定, AWS 將針對磁碟區所在的區域使用預設 KMS 金鑰。如果未變更/aws/ebs,這將是一個自動產生的金鑰,稱為 。

"blockSize"

格式化基礎檔案系統時要使用的區塊大小。僅 linux 節點支援 ,且具有 fstype ext2ext4ext3xfs

「inodeSize」

格式化基礎檔案系統時要使用的索引子大小。僅 linux 節點支援 ,且具有 fstype ext2ext4ext3xfs

"bytesPerInode"

格式化基礎檔案系統bytes-per-inode時使用的 。僅 linux 節點和具有 fstype ext2ext3、 的 支援ext4

"numberOfInodes"

格式化基礎檔案系統number-of-inodes時使用的 。僅 linux 節點和具有 fstype ext2ext3、 的 支援ext4

"ext4BigAlloc"

true、false

false

透過啟用bigalloc格式化選項,將ext4檔案系統變更為使用叢集區塊配置。警告: bigalloc 可能未完全支援節點的 Linux 核心。

"ext4ClusterSize"

啟用bigalloc功能時,格式化ext4檔案系統時要使用的叢集大小。注意: ext4BigAlloc 參數必須設為 true。

如需詳細資訊,請參閱 GitHub 上的 AWS EBS CSI 驅動程式

考量事項

EKS Auto Mode 的區塊儲存功能與 EBS CSI 驅動程式不同。

  • 靜態佈建

    • 如果您想要搭配 EKS Auto 模式使用外部建立的 EBS 磁碟區,您需要手動新增具有 金鑰eks:eks-cluster-name和叢集名稱值的 AWS 標籤。

  • 節點啟動提示

    • 您無法使用節點啟動污點功能,以防止儲存功能就緒前進行 Pod 排程

  • 動態佈建磁碟區上的自訂標籤

    • 您不能使用額外標籤 CLI 旗標,在動態佈建的 EBS 磁碟區上設定自訂標籤

    • 您可以使用StorageClass標記來新增自訂標籤。EKS Auto Mode 會將標籤新增至相關聯的 AWS 資源。您需要更新自訂標籤的叢集 IAM 角色。如需詳細資訊,請參閱EKS Auto 資源的自訂 AWS 標籤

  • EBS 詳細效能指標

    • 您無法存取 EBS 詳細效能的 Prometheus 指標

安裝 CSI 快照控制器附加元件

EKS Auto 模式與 CSI 快照控制器 Amazon EKS 附加元件相容。

AWS 建議您將此附加元件設定為在內建system節點集區上執行。

如需詳細資訊,請參閱:

在系統節點集區中安裝快照控制器

  1. 在 AWS 主控台中開啟您的 EKS 叢集

  2. 附加元件索引標籤中,選取取得更多附加元件

  3. 選取 CSI 快照控制器,然後選取下一步

  4. 設定選取的附加元件設定頁面上,選取選用組態設定以檢視附加元件組態結構描述

    1. 插入下列 yaml,將快照控制器與system節點集區建立關聯。快照控制器包含 CriticalAddonsOnly污點的容錯。

      { "nodeSelector": { "karpenter.sh/nodepool": "system" } }
    2. 選取下一步

  5. 檢閱附加元件組態,然後選取建立