協助改善此頁面
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
想要為此使用者指南做出貢獻? 選擇 GitHub 上的編輯此頁面連結,該連結位於每個頁面的右窗格中。您的貢獻將幫助我們的使用者指南更適合每個人。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Amazon EBS 存放Kubernetes磁碟區
注意
新功能:Amazon EKS Auto Mode 會自動執行區塊儲存的例行任務。了解如何 將具狀態工作負載範例部署至 EKS Auto 模式。
Amazon Elastic Block Store (Amazon EBS) 容器儲存介面 (CSI) 驅動程式
考量事項
-
您不需要在 EKS Auto Mode 叢集上安裝 Amazon EBS CSI 控制器。
-
您無法將 Amazon EBS 磁碟區掛載至 Fargate Pods。
-
您可以在 Fargate 節點上執行 Amazon EBS CSI 控制器,但是 Amazon EBS CSI 節點 DaemonSet 僅能在 Amazon EC2 執行個體上執行。
-
Amazon EBS 磁碟區和 Amazon EBS CSI 驅動程式與 Amazon EKS 混合節點不相容。
-
將提供最新附加元件版本和一個先前版本的支援。最新版本中發現的錯誤或漏洞將回溯至新次要版本中的先前版本。
重要
若要使用 Amazon EBS CSI 驅動程式的快照功能,您必須先安裝 CSI 快照控制器。如需詳細資訊,請參閱啟用 CSI 磁碟區的快照功能。
必要條件
-
現有的叢集。若要查看所需的平台版本,請執行下列命令。
aws eks describe-addon-versions --addon-name aws-ebs-csi-driver
-
EBS CSI 驅動程式需要 AWS IAM 許可。
-
AWS 建議使用 EKS Pod 身分。如需詳細資訊,請參閱設定 EKS Pod 身分識別的概觀。
-
如需服務帳戶 IAM 角色的相關資訊,請參閱 建立 IAM OIDC 叢集的提供者。
-
-
如果您使用的是全叢集限制的 PodSecurityPolicy,請確定已授予附加元件足夠的部署許可。如需每個附加元件 Pod 所需的許可,請參閱 GitHub 上的相關附加元件清單檔案定義
。
步驟 1:建立 IAM 角色
Amazon EBS CSI 外掛程式需要 IAM 許可,才能代表您呼叫 AWS APIs。如果您不執行這些步驟,嘗試安裝附加元件並執行 kubectl describe pvc
時,將會顯示 failed to provision volume with StorageClass
並顯示could not create volume in EC2: UnauthorizedOperation
錯誤。如需詳細資訊,請參閱 GitHub 上的設定驅動程式許可
注意
Pods 可以存取指派給 IAM 角色的許可,除非您封鎖對 IMDS 的存取。如需詳細資訊,請參閱使用最佳實務保護 Amazon EKS 叢集。
下列程序說明如何建立 IAM 角色,並將 AWS 受管政策連接至該角色。若要實作此程序,您可以使用下列其中一個工具:
注意
本程序中的特定步驟是針對將驅動程式用作 Amazon EKS 附加元件而編寫。需要執行不同的步驟,才能將驅動程式用作自我管理附加元件。如需詳細資訊,請參閱 GitHub 上的設定驅動程式許可
eksctl
-
建立 IAM 角色並連接政策。 會 AWS 維護 AWS 受管政策,或者您可以建立自己的自訂政策。您可以建立 IAM 角色,並使用下列命令連接 AWS 受管政策。使用您叢集的名稱取代
my-cluster
。命令會部署可建立 IAM 角色並將 IAM 政策連接至其中的 AWS CloudFormation 堆疊。eksctl create iamserviceaccount \ --name ebs-csi-controller-sa \ --namespace kube-system \ --cluster my-cluster \ --role-name AmazonEKS_EBS_CSI_DriverRole \ --role-only \ --attach-policy-arn arn:aws: iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy \ --approve
-
如果在 Amazon EBS 磁碟區上使用自訂 KMS 金鑰
進行加密,請視需要自訂 IAM 角色。例如,請執行以下操作: -
複製以下程式碼並貼到新
kms-key-for-encryption-on-ebs.json
檔案中。將custom-key-arn
取代為自訂 KMS 金鑰 ARN。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": ["custom-key-arn"], "Condition": { "Bool": { "kms:GrantIsForAWSResource": "true" } } }, { "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": ["custom-key-arn"] } ] }
-
建立政策。您可以將
KMS_Key_For_Encryption_On_EBS_Policy
變更為不同的名稱。但是,如果您這樣做,請務必在稍後的步驟中也進行變更。aws iam create-policy \ --policy-name KMS_Key_For_Encryption_On_EBS_Policy \ --policy-document file://kms-key-for-encryption-on-ebs.json
-
使用以下命令將 IAM 政策連接至角色。使用您的帳戶 ID 取代
111122223333
。aws iam attach-role-policy \ --policy-arn arn:aws: iam::111122223333:policy/KMS_Key_For_Encryption_On_EBS_Policy \ --role-name AmazonEKS_EBS_CSI_DriverRole
-
AWS Management Console
-
開啟位於 https://console.aws.amazon.com/iam/
的 IAM 主控台。 -
在左側導覽窗格中,選擇 Roles (角色)。
-
在 Roles (角色) 頁面上,選擇 Create role (建立角色)。
-
在 Select trusted entity (選取信任的實體) 頁面上,執行以下作業:
-
在 Trusted entity type (信任的實體類型) 區段中,選擇 Web identity (Web 身分)。
-
對於身分提供者,選擇叢集的OpenID Connect提供者 URL (如 Amazon EKS 中的概觀所示)。
-
針對 Audience (對象),選擇
sts.amazonaws.com
。 -
選擇 Next (下一步)。
-
-
在 Add permissions (新增許可) 頁面上,執行以下作業:
-
在 Filter policies (篩選政策) 方塊中,輸入
AmazonEBSCSIDriverPolicy
。 -
勾選在搜尋中傳回的
AmazonEBSCSIDriverPolicy
左側的核取方塊。 -
選擇 Next (下一步)。
-
-
在 Name, review, and create (命名、檢閱和建立) 頁面上,執行以下作業:
-
針對角色名稱,輸入角色的唯一名稱,例如
AmazonEKS_EBS_CSI_DriverRole
。 -
藉由連接標籤做為鍵值對,在新增標籤 (選用) 下將中繼資料新增至角色。如需有關在 IAM 中使用標籤的詳細資訊,請參閱《IAM 使用者指南》中的標記 IAM 資源。
-
選擇建立角色。
-
-
建立角色之後,在主控台中選擇角色,以開啟角色進行編輯。
-
選擇 Trust Relationships (信任關係) 標籤,然後選擇 Edit Trust Relationship (編輯信任政策)。
-
查找與下列行相似的行:
"oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:aud": "sts.amazonaws.com"
在上一行的末尾新增一個逗號,然後在上一行之後新增下一行。將
region-code
取代為您的叢集所在的 AWS 區域。將EXAMPLED539D4633E53DE1B71EXAMPLE
取代為您的叢集的 OIDC 提供者 ID。"oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:sub": "system:serviceaccount:kube-system:ebs-csi-controller-sa"
-
選擇 Update policy (更新政策) 以完成操作。
-
如果在 Amazon EBS 磁碟區上使用自訂 KMS 金鑰
進行加密,請視需要自訂 IAM 角色。例如,請執行以下操作: -
在左側導覽窗格中選擇 Policies (政策)。
-
在 Policies (政策) 頁面上,選擇 Create a policy (建立政策)。
-
在建立政策頁面上,選擇 JSON 標籤。
-
將下列程式碼複製並貼到編輯器中,以自訂 KMS 金鑰 ARN 取代
custom-key-arn
。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": ["custom-key-arn"], "Condition": { "Bool": { "kms:GrantIsForAWSResource": "true" } } }, { "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": ["custom-key-arn"] } ] }
-
選擇下一步:標籤。
-
在 Add tags (Optional) (新增標籤 (選用)) 頁面上,選擇 Next: Review (下一步:檢閱)。
-
針對名稱,輸入政策的唯一名稱 (例如
KMS_Key_For_Encryption_On_EBS_Policy
)。 -
選擇 建立政策。
-
在左側導覽窗格中,選擇 Roles (角色)。
-
在主控台中選擇
AmazonEKS_EBS_CSI_DriverRole
以開啟它進行編輯。 -
在新增許可下拉式清單中,選擇連接政策。
-
在篩選政策方塊中,輸入
KMS_Key_For_Encryption_On_EBS_Policy
。 -
選取搜尋中傳回的
KMS_Key_For_Encryption_On_EBS_Policy
左側的核取方塊。 -
選擇連接政策。
-
AWS CLI
-
檢視叢集的 OIDC 提供者 URL。使用您的叢集名稱取代
my-cluster
。如果來自命令的輸出是None
,則請檢閱先決條件。aws eks describe-cluster --name my-cluster --query "cluster.identity.oidc.issuer" --output text
範例輸出如下。
https://oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE
-
建立 IAM 角色,授予其
AssumeRoleWithWebIdentity
動作。-
將下列內容複製到名為 的檔案
aws-ebs-csi-driver-trust-policy.json
。使用您的帳戶 ID 取代111122223333
。將EXAMPLED539D4633E53DE1B71EXAMPLE
和region-code
取代為上一個步驟中傳回的值。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws: iam::111122223333:oidc-provider/oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:aud": "sts.amazonaws.com", "oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:sub": "system:serviceaccount:kube-system:ebs-csi-controller-sa" } } } ] }
-
建立角色。您可以將
AmazonEKS_EBS_CSI_DriverRole
變更為不同的名稱。若要變更名稱,請務必在稍後的步驟中進行變更。aws iam create-role \ --role-name AmazonEKS_EBS_CSI_DriverRole \ --assume-role-policy-document file://"aws-ebs-csi-driver-trust-policy.json"
-
-
連接政策。 會 AWS 維護 AWS 受管政策,或者您可以建立自己的自訂政策。使用下列命令將 AWS 受管政策連接至角色。
aws iam attach-role-policy \ --policy-arn arn:aws: iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy \ --role-name AmazonEKS_EBS_CSI_DriverRole
-
如果在 Amazon EBS 磁碟區上使用自訂 KMS 金鑰
進行加密,請視需要自訂 IAM 角色。例如,請執行以下操作: -
複製以下程式碼並貼到新
kms-key-for-encryption-on-ebs.json
檔案中。將custom-key-arn
取代為自訂 KMS 金鑰 ARN。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": ["custom-key-arn"], "Condition": { "Bool": { "kms:GrantIsForAWSResource": "true" } } }, { "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": ["custom-key-arn"] } ] }
-
建立政策。您可以將
KMS_Key_For_Encryption_On_EBS_Policy
變更為不同的名稱。但是,如果您這樣做,請務必在稍後的步驟中也進行變更。aws iam create-policy \ --policy-name KMS_Key_For_Encryption_On_EBS_Policy \ --policy-document file://kms-key-for-encryption-on-ebs.json
-
使用以下命令將 IAM 政策連接至角色。使用您的帳戶 ID 取代
111122223333
。aws iam attach-role-policy \ --policy-arn arn:aws: iam::111122223333:policy/KMS_Key_For_Encryption_On_EBS_Policy \ --role-name AmazonEKS_EBS_CSI_DriverRole
-
現在您已建立 Amazon EBS CSI 驅動程式 IAM 角色,您可以繼續下一節。當您使用此 IAM 角色部署附加元件時,它會建立並設定為使用名為 的服務帳戶ebs-csi-controller-sa
。服務帳戶繫結至已指派必要Kubernetes許可Kubernetesclusterrole
的 。
步驟 2:取得 Amazon EBS CSI 驅動程式
我們建議您透過 Amazon EKS 附加元件安裝 Amazon EBS CSI 驅動程式,以提高安全性並減少工作量。若要將 Amazon EKS 附加元件新增至叢集,請參閱 建立 Amazon EKS 附加元件。如需附加元件的詳細資訊,請參閱 Amazon EKS 附加元件。
重要
將 Amazon EBS 驅動程式新增為 Amazon EKS 附加元件之前,請確認叢集上未安裝自我管理版本的驅動程式。如果是這樣,請參閱 GitHub 上的解除安裝自我管理的 Amazon EBS CSI 驅動程式
或者,如果您想要自行管理安裝 Amazon EBS CSI 驅動程式,請參閱在
步驟 3:部署範例應用程式
您可以部署各種範例應用程式,再視需要進行修改。如需詳細資訊,請參閱 上的 Kubernetes 範例