選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

使用 Amazon EBS 存放 Kubernetes 磁碟區

焦點模式
使用 Amazon EBS 存放 Kubernetes 磁碟區 - Amazon EKS

協助改善此頁面

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

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

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

協助改善此頁面

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

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

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

注意

新功能:Amazon EKS Auto Mode 會自動執行區塊儲存的例行任務。了解如何 將具狀態工作負載範例部署至 EKS Auto 模式

Amazon Elastic Block Store (Amazon EBS) 容器儲存介面 (CSI) 驅動程式會管理 Amazon EBS 磁碟區的生命週期,做為您建立之 Kubernetes 磁碟區的儲存體。Amazon EBS CSI 驅動程式會為這些類型的 Kubernetes 磁碟區建立 Amazon EBS 磁碟區:一般暫時性磁碟區持久性磁碟區

考量事項

  • 您不需要在 EKS Auto Mode 叢集上安裝 Amazon EBS CSI 控制器。

  • 您無法將 Amazon EBS 磁碟區掛載到 Fargate Pod。

  • 您可以在 Fargate 節點上執行 Amazon EBS CSI 控制器,但是 Amazon EBS CSI 節點 DaemonSet 僅能在 Amazon EC2 執行個體上執行。

  • Amazon EBS 磁碟區和 Amazon EBS CSI 驅動程式與 Amazon EKS 混合節點不相容。

  • 將提供最新附加元件版本和一個先前版本的支援。最新版本中找到的錯誤或漏洞將回溯至新次要版本中的先前版本。

  • 只有使用 ebs.csi.eks.amazonaws.com做為佈建器從儲存類別建立的平台版本,才能掛載在 EKS Auto Mode 建立的節點上。現有的平台版本必須使用磁碟區快照遷移至新的儲存類別。

重要

若要使用 Amazon EBS CSI 驅動程式的快照功能,您必須先安裝 CSI 快照控制器。如需詳細資訊,請參閱啟用 CSI 磁碟區的快照功能

先決條件

步驟 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 上的設定驅動程式許可

注意

除非您封鎖對 IMDS 的存取,否則 Pod 將可存取指派給 IAM 角色的許可。如需詳細資訊,請參閱使用最佳實務保護 Amazon EKS 叢集

下列程序說明如何建立 IAM 角色,並將 AWS 受管政策連接至該角色。若要實作此程序,您可以使用下列其中一個工具:

注意

本程序中的特定步驟是針對將驅動程式用作 Amazon EKS 附加元件而編寫。需要執行不同的步驟,才能將驅動程式用作自我管理附加元件。如需詳細資訊,請參閱在 GitHub 上設定驅動程式許可

eksctl

  1. 建立 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
  2. 如果在 Amazon EBS 磁碟區上使用自訂 KMS 金鑰進行加密,請視需要自訂 IAM 角色。例如,請執行以下操作:

    1. 複製以下程式碼並貼到新 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"] } ] }
    2. 建立政策。您可以將 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
    3. 使用以下命令將 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

  1. 開啟位於 https://console.aws.amazon.com/iam/ 的 IAM 主控台。

  2. 在左側導覽窗格中,選擇 Roles (角色)。

  3. Roles (角色) 頁面上,選擇 Create role (建立角色)。

  4. Select trusted entity (選取信任的實體) 頁面上,執行以下作業:

    1. Trusted entity type (信任的實體類型) 區段中,選擇 Web identity (Web 身分)。

    2. 對於 Identity provider (身分提供者),為您的叢集選擇 OpenID Connect provider URL (OpenID Connect 供應商 URL)(如 Amazon EKS Overview (概觀) 下所示)。

    3. 針對 Audience (對象),選擇 sts.amazonaws.com

    4. 選擇 Next (下一步)

  5. Add permissions (新增許可) 頁面上,執行以下作業:

    1. Filter policies (篩選政策) 方塊中,輸入 AmazonEBSCSIDriverPolicy

    2. 勾選在搜尋中傳回的 AmazonEBSCSIDriverPolicy 左側的核取方塊。

    3. 選擇 Next (下一步)

  6. Name, review, and create (命名、檢閱和建立) 頁面上,執行以下作業:

    1. 針對角色名稱,輸入角色的唯一名稱,例如 AmazonEKS_EBS_CSI_DriverRole

    2. 藉由連接標籤做為鍵值對,在新增標籤 (選用) 下將中繼資料新增至角色。如需有關在 IAM 中使用標籤的詳細資訊,請參閱《IAM 使用者指南》中的標記 IAM 資源

    3. 選擇建立角色

  7. 建立角色之後,在主控台中選擇角色,以開啟角色進行編輯。

  8. 選擇 Trust Relationships (信任關係) 標籤,然後選擇 Edit Trust Relationship (編輯信任政策)。

  9. 查找與下列行相似的行:

    "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"
  10. 選擇 Update policy (更新政策) 以完成操作。

  11. 如果在 Amazon EBS 磁碟區上使用自訂 KMS 金鑰進行加密,請視需要自訂 IAM 角色。例如,請執行以下操作:

    1. 在左側導覽窗格中選擇 Policies (政策)。

    2. Policies (政策) 頁面上,選擇 Create a policy (建立政策)。

    3. 建立政策頁面上,選擇 JSON 標籤。

    4. 將下列程式碼複製並貼到編輯器中,以自訂 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"] } ] }
    5. 選擇下一步:標籤

    6. Add tags (Optional) (新增標籤 (選用)) 頁面上,選擇 Next: Review (下一步:檢閱)。

    7. 針對名稱,輸入政策的唯一名稱 (例如 KMS_Key_For_Encryption_On_EBS_Policy)。

    8. 選擇 建立政策

    9. 在左側導覽窗格中,選擇 Roles (角色)。

    10. 在主控台中選擇 AmazonEKS_EBS_CSI_DriverRole 以開啟它進行編輯。

    11. 新增許可下拉式清單中,選擇連接政策

    12. 篩選政策方塊中,輸入 KMS_Key_For_Encryption_On_EBS_Policy

    13. 選取搜尋中傳回的 KMS_Key_For_Encryption_On_EBS_Policy 左側的核取方塊。

    14. 選擇連接政策

AWS CLI

  1. 檢視叢集的 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
  2. 建立 IAM 角色,授予其 AssumeRoleWithWebIdentity 動作。

    1. 將下列內容複製到名為 的檔案aws-ebs-csi-driver-trust-policy.json。使用您的帳戶 ID 取代 111122223333。將 EXAMPLED539D4633E53DE1B71EXAMPLEregion-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" } } } ] }
    2. 建立角色。您可以將 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"
  3. 連接 policy. AWS mains AWS 受管政策,或者您可以建立自己的自訂政策。使用下列命令將 AWS 受管政策連接至角色。

    aws iam attach-role-policy \ --policy-arn arn:aws: iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy \ --role-name AmazonEKS_EBS_CSI_DriverRole
  4. 如果在 Amazon EBS 磁碟區上使用自訂 KMS 金鑰進行加密,請視需要自訂 IAM 角色。例如,請執行以下操作:

    1. 複製以下程式碼並貼到新 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"] } ] }
    2. 建立政策。您可以將 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
    3. 使用以下命令將 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。服務帳戶繫結至clusterrole獲指派所需 Kubernetes 許可的 Kubernetes。

步驟 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 驅動程式,請參閱 GitHub 上的安裝

步驟 3:部署範例應用程式

您可以部署各種範例應用程式,再視需要進行修改。如需詳細資訊,請參閱 GitHub 上的 Kubernetes 範例

隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。