協助改進此頁面
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
若要為本使用者指南貢獻內容,請點選每個頁面右側面板中的在 GitHub 上編輯此頁面連結。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
建立儲存類別
在 Amazon EKS 自動模式中,StorageClass 定義了當應用程式請求持久性儲存時,如何自動佈建 Amazon EBS 磁碟區。本頁面闡釋了如何建立和設定與 Amazon EKS 自動模式協同工作的 StorageClass,以佈建 EBS 磁碟區。
透過設定 StorageClass,您可為 EBS 磁碟區指定預設設定,包括磁碟區類型、加密、IOPS 和其他儲存參數。您也可以StorageClass將 設定為使用 AWS KMS 金鑰進行加密管理。
EKS 自動模式不會為您建立 StorageClass。您必須建立 StorageClass 參考 ebs.csi.eks.amazonaws.com,以使用 EKS 自動模式的儲存功能。
首先,建立名為 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- 使用 EKS 自動模式 -
allowedTopologies- 指定eks.amazonaws.com/compute-type:auto來匹配matchLabelExpressions,將確保如果您的 Pod 需要使用自動模式自動佈建磁碟區,則這些 Pod 不會被排程到非自動節點上。 -
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 自動模式自動佈建的 EBS 磁碟區,您需要:
-
建立自我管理的 KMS 金鑰。
-
如需詳細資訊,請參閱《KMS 使用者指南》中的建立對稱加密 KMS 金鑰或 Amazon Elastic Block Store (Amazon EBS) 如何使用 KMS。
-
-
建立一個允許存取 KMS 金鑰的新政策。
-
使用下面的範例 IAM 政策來建立該政策。插入新的自我管理 KMS 金鑰的 ARN。如需詳細資訊,請參閱《IAM 使用者指南》中的建立角色和連接政策 (主控台)。 AWS
-
-
將政策附加到 EKS 叢集角色。
-
使用 AWS 主控台尋找 EKS 叢集角色的 ARN。角色資訊在概覽區段中可見。如需詳細資訊,請參閱Amazon EKS 叢集 IAM 角色。
-
-
更新
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::123456789012: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": "123456789012", "kms:ViaService": "ec2.us-east-1.amazonaws.com" } } } ] }
自我管理的 KMS StorageClass 範例
parameters: type: gp3 encrypted: "true" kmsKeyId: <custom-key-arn>
StorageClass 參數參考
有關 Kubernetes StorageClass 資源的一般資訊,請參閱 Kubernetes 文件中的儲存類別
StorageClass 資源的 parameters區段是特定的 AWS。請使用下列資料表檢閱可用的選項。
| Parameters | 值 | 預設 | Description |
|---|---|---|---|
|
"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/秒為單位。僅在指定了 gp3 磁碟區類型時有效。 |
|
|
"encrypted" |
true、false |
false |
指示是否加密磁碟區。有效值為 "true" 或 "false"。 |
|
"blockExpress" |
true、false |
false |
啟用 io2 Block Express 磁碟區的建立。 |
|
"kmsKeyId" |
加密磁碟區時要使用的金鑰的完整 ARN。如果未指定, AWS 將針對磁碟區所在的區域使用預設 KMS 金鑰。如果未變更,這將是一個自動產生的金鑰,稱為 |
||
|
"blockSize" |
格式化底層檔案系統時使用的區塊大小。僅在 Linux 節點上並使用 |
||
|
"inodeSize" |
格式化底層檔案系統時使用的 inode 大小。僅在 Linux 節點上並使用 |
||
|
"bytesPerInode" |
格式化底層檔案系統時使用的 |
||
|
"numberOfInodes" |
格式化底層檔案系統時使用的 |
||
|
"ext4BigAlloc" |
true、false |
false |
透過啟用 |
|
"ext4ClusterSize" |
當啟用 |
如需詳細資訊,請參閱 GitHub 上的 AWS EBS CSI 驅動程式
考量事項
注意
您只能在 EKS 自動模式節點上,部署依賴於 EKS 自動模式 StorageClass 的工作負載。如果您有一個混合類型節點的叢集,需要設定您的工作負載僅在 EKS 自動模式節點上執行。如需詳細資訊,請參閱控制工作負載是否部署在 EKS 自動模式節點上。
EKS 自動模式的區塊儲存功能與 EBS CSI 驅動程式不同。
-
靜態佈建
-
如果您想要搭配 EKS Auto 模式使用外部建立的 EBS 磁碟區,則需要手動新增具有 金鑰
eks:eks-cluster-name和叢集名稱值的 AWS 標籤。
-
-
節點啟動污點
-
您無法使用節點啟動污點功能,以在儲存功能準備就緒之前防止 Pod 排程
-
-
動態佈建磁碟區上的自訂標籤
-
您無法使用 extra-tag CLI 標誌來設定動態佈建 EBS 磁碟區上的自訂標籤
-
您可使用
StorageClass標記來新增自訂標籤。EKS Auto Mode 會將標籤新增至相關聯的 AWS 資源。您需要更新叢集 IAM 角色以用於自訂標籤。如需詳細資訊,請參閱EKS Auto 資源的自訂 AWS 標籤。
-
-
EBS 詳細效能指標
-
您無法存取 EBS 詳細效能的 Prometheus 指標
-
安裝 CSI 快照控制器附加元件
EKS 自動模式與 CSI 快照控制器 Amazon EKS 附加元件相容。
AWS 建議您將此附加元件設定為在內建system節點集區上執行。
如需詳細資訊,請參閱:
在系統節點集區中安裝快照控制器
-
在 AWS 主控台中開啟您的 EKS 叢集
-
從附加元件索引標籤中,選取取得更多附加元件
-
選取 CSI 快照控制器,然後選擇下一步
-
在設定選取的附加元件設定頁面上,選取選用組態設定,以檢視附加元件組態結構描述
-
插入以下 yaml 以將快照控制器與
system節點集區關聯。快照控制器包含對CriticalAddonsOnly污點的容錯。{ "nodeSelector": { "karpenter.sh/nodepool": "system" } } -
選取下一步
-
-
檢閱附加元件組態,然後選取建立