使用 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 EFSCSI驅動程式部署至您的 Amazon EKS叢集。

考量事項

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

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

  • 動態佈建需要驅動程式的 1.2或更新版本。您可以在任何支援的 Amazon EKS叢集版本 上使用 驅動程式1.1版本,針對持久性磁碟區使用靜態佈建

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

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

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

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

必要條件

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

  • 在您的裝置或 上安裝和設定的 1.27.160 AWS Command Line Interface (AWS CLI) 版本 2.12.3或更新版本 AWS CloudShell。若要檢查您目前的版本,請使用 aws --version | cut -d / -f2 | cut -d ' ' -f1。套件管理員yum,例如 apt-get、 或 Homebrew for macOS 通常是最新版本 後面的幾個版本 AWS CLI。若要安裝最新版本,請參閱使用 安裝、更新和解除安裝 AWS CLI快速組態 aws configure (在 AWS Command Line Interface 使用者指南中) 安裝在 中的 AWS CLI 版本 AWS CloudShell 也可能是最新版本後面的幾個版本。若要更新它,請參閱 AWS CloudShell 使用者指南 中的安裝 AWS CLI 到您的主目錄

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

步驟 1:建立IAM角色

Amazon EFSCSI驅動程式需要IAM許可才能與您的檔案系統互動。建立IAM角色,並將所需的 AWS 受管政策連接至該角色。您可以使用 eksctl、 AWS Management Console或 AWS CLI。

注意

此程序中的特定步驟是使用驅動程式作為 Amazon EKS 附加元件編寫。如需自我管理安裝的詳細資訊,請參閱在 上設定驅動程式許可 GitHub.

eksctl

使用 建立 Amazon EFSCSI驅動程式IAM角色 eksctl

執行下列命令以建立IAM角色。將 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
若要使用 建立 Amazon EFSCSI驅動程式IAM角色 AWS Management Console
  1. 在 開啟IAM主控台https://console.aws.amazon.com/iam/

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

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

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

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

    2. 針對 Identity provider ,選擇 OpenID Connect 叢集URL的提供者 (如 Amazon 中的概觀 所示EKS)。

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

    4. 選擇 Next (下一步)。

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

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

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

    3. 選擇 Next (下一步)。

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

    1. 針對 Role name (角色名稱),為您的角色輸入唯一名稱 (例如 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
若要使用 建立 Amazon EFSCSI驅動程式IAM角色 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. 建立授予AssumeRoleWithWebIdentity動作IAM的角色。

    1. 將下列內容複製到名為 aws-efs-csi-driver-trust-policy.json 的檔案。使用您的帳戶 ID 取代 111122223333。使用前一個步驟傳回的值取代 EXAMPLED539D4633E53DE1B71EXAMPLEregion-code如果您的叢集位於 AWS GovCloud (美國東部) 或 AWS GovCloud (美國西部) AWS 區域,則arn:aws:以 取代 arn:aws-us-gov:

      { "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 GovCloud (美國東部) 或 AWS GovCloud (美國西部) AWS 區域,則arn:aws:以 取代 arn:aws-us-gov:

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

步驟 2:取得 Amazon EFSCSI驅動程式

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

或者,如果您想要自行管理安裝 Amazon EFSCSI驅動程式,請參閱在 上安裝 GitHub.

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

注意

不需要此步驟 AWS Fargate。A Pod 在 Fargate 上執行 會自動掛載 Amazon EFS 檔案系統。

若要建立 Amazon EFS 檔案系統,請參閱在 上建立 Amazon EFS 檔案系統 EKS GitHub.

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

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