使用 Amazon EFS 存放彈性檔案系統 - Amazon EKS

協助改善此頁面

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

想要為此使用者指南做出貢獻? 選擇 GitHub 上的編輯此頁面連結,該連結位於每個頁面的右窗格中。您的貢獻將幫助我們的使用者指南更適合每個人。

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

使用 Amazon EFS 存放彈性檔案系統

Amazon Elastic File System (Amazon EFS) 提供無伺服器、完全彈性的檔案儲存功能,讓您無需佈建或管理儲存容量和效能,即可分享檔案資料。Amazon EFS Container Storage Interface (CSI) 驅動程式提供 CSI 介面,允許在 上執行的Kubernetes叢集 AWS 管理 Amazon EFS 檔案系統的生命週期。本主題旨在說明如何將 Amazon EFS CSI 驅動程式部署到您的 Amazon EKS 叢集。

考量事項

  • Amazon EFS CSI 驅動程式與 Windows 型容器映像不相容。

  • 您無法針對具有 Fargate 節點的持久性磁碟區使用動態佈建,但您可以使用靜態佈建

  • 動態佈建需要 1.2 或更新版本的驅動程式。您可以在任何支援的 Amazon EKS 叢集版本上使用驅動程式1.1版本,將靜態佈建用於持久性磁碟區 (請參閱 了解 EKS 上的Kubernetes版本生命週期)。

  • 此驅動程式的 1.3.2 版或更新版本支援 Arm64 架構,包括以 Amazon EC2 Graviton 為基礎的執行個體。

  • 此驅動程式的 1.4.2 版或更新版本支援使用 FIPS 掛載檔案系統。

  • 記下 Amazon EFS 的資源配額。例如,每個 Amazon EFS 檔案系統都可以建立 1000 個存取點的配額。如需詳細資訊,請參閱無法變更的 Amazon EFS 資源配額

  • 2.0.0 版開始,此驅動程式會針對 TLS 連線從使用 切換stunnelefs-proxy為 。使用 efs-proxy 時,它會針對執行節點開啟等於一加上核心數量的執行緒。

  • Amazon EFS CSI 驅動程式與 Amazon EKS 混合節點不相容。

必要條件

  • 叢集的現有 AWS Identity and Access Management (IAM) OpenID Connect(OIDC) 提供者。若要判定您是否已經擁有一個,或是要建立一個,請參閱 建立 IAM OIDC 叢集的提供者

  • 在您的裝置2.12.3或 AWS CloudShell 上安裝和設定 AWS 命令列界面 (AWS CLI) 的版本 1.27.160 或更新版本。若要檢查您目前的版本,請使用 aws --version | cut -d / -f2 | cut -d ' ' -f1yumapt-get或 Homebrew for 等套件管理員macOS通常是最新版本 CLI AWS 後面的幾個版本。若要安裝最新版本,請參閱《 AWS 命令列界面使用者指南》中的使用 aws 設定安裝 和 Quick configuration。 https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-config安裝在 AWS CloudShell 中的 AWS CLI 版本也可能是最新版本後面的幾個版本。若要更新它,請參閱 CloudShell AWS 使用者指南中的將 CLI 安裝到您的主目錄 AWS CloudShell

  • kubectl 命令列工具安裝在您的裝置或 AWS CloudShell 上。版本可以與您的叢集 Kubernetes 版本相同,或是為最多比該版本更舊一版或更新一版的次要版本。例如,如果您的叢集版本為 1.29,則可以搭配使用 kubectl 1.281.291.30 版。若要安裝或升級 kubectl,請參閱 設定 kubectl 和 eksctl

注意

在 Fargate Pod上執行的 會自動掛載 Amazon EFS 檔案系統,而不需要手動驅動程式安裝步驟。

步驟 1:建立 IAM 角色

Amazon EFS CSI 驅動程式需要 IAM 許可才能與檔案系統互動。建立 IAM 角色,並將所需的 AWS 受管政策連接至該角色。若要實作此程序,您可以使用下列其中一個工具:

注意

本程序中的特定步驟是針對將驅動程式用作 Amazon EKS 附加元件而編寫。如需有關自我管理安裝的詳細資訊,請參閱 GitHub 上的 Set up driver permission 一節。

eksctl

執行下列命令以使用 建立 IAM 角色eksctl。將 my-cluster 取代為您的叢集名稱,並將 AmazonEKS_EFS_CSI_DriverRole 取代為您的角色名稱。

export cluster_name=my-cluster export role_name=AmazonEKS_EFS_CSI_DriverRole eksctl create iamserviceaccount \ --name efs-csi-controller-sa \ --namespace kube-system \ --cluster $cluster_name \ --role-name $role_name \ --role-only \ --attach-policy-arn arn:aws: iam::aws:policy/service-role/AmazonEFSCSIDriverPolicy \ --approve TRUST_POLICY=$(aws iam get-role --role-name $role_name --query 'Role.AssumeRolePolicyDocument' | \ sed -e 's/efs-csi-controller-sa/efs-csi-*/' -e 's/StringEquals/StringLike/') aws iam update-assume-role-policy --role-name $role_name --policy-document "$TRUST_POLICY"

AWS Management Console

執行下列操作以使用 建立 IAM 角色 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. 針對身分提供者,選擇叢集的OpenID Connect提供者 URL (如 Amazon EKS 中的概觀所示)。

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

    4. 選擇 Next (下一步)

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

    1. 篩選政策方塊中,輸入 AmazonEFSCSIDriverPolicy

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

    3. 選擇 Next (下一步)

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

    1. 針對角色名稱,輸入角色的唯一名稱,例如 AmazonEKS_EFS_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:efs-csi-*",
  10. Condition 運算子從 "StringEquals" 修改為 "StringLike"

  11. 選擇 Update policy (更新政策) 以完成操作。

AWS CLI

執行下列命令以使用 CLI 建立 IAM AWS 角色。

  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. 建立授予 AssumeRoleWithWebIdentity 動作許可的 IAM 角色。

    1. 將下列內容複製到名為 aws-efs-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": { "StringLike": { "oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:sub": "system:serviceaccount:kube-system:efs-csi-*", "oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:aud": "sts.amazonaws.com" } } } ] }
    2. 建立角色。您可以將 AmazonEKS_EFS_CSI_DriverRole 變更為不同的名稱,但如果這樣做,請務必在後續步驟中也進行變更。

      aws iam create-role \ --role-name AmazonEKS_EFS_CSI_DriverRole \ --assume-role-policy-document file://"aws-efs-csi-driver-trust-policy.json"
  3. 使用下列命令,將所需的 AWS 受管政策連接至角色。

    aws iam attach-role-policy \ --policy-arn arn:aws: iam::aws:policy/service-role/AmazonEFSCSIDriverPolicy \ --role-name AmazonEKS_EFS_CSI_DriverRole

步驟 2:取得 Amazon EFS CSI 驅動程式

我們建議您透過 Amazon EKS 附加元件安裝 Amazon EFS CSI 驅動程式。若要將 Amazon EKS 附加元件新增至叢集,請參閱 建立 Amazon EKS 附加元件。如需附加元件的詳細資訊,請參閱 Amazon EKS 附加元件。如果您無法使用 Amazon EKS 附加元件,建議您提交問題,說明為何無法前往容器藍圖 GitHub 儲存庫

或者,如果您想要 Amazon EFS CSI 驅動程式的自我管理安裝,請參閱 GitHub 上的安裝

步驟 3:建立 Amazon EFS 檔案系統

如需建立 Amazon EFS 檔案系統,請參閱 GitHub 上的為 Amazon EKS 建立 Amazon EFS 檔案系統

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

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