協助改善此頁面
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
若要提供此使用者指南,請選擇位於每個頁面右窗格的 GitHub 上的編輯此頁面連結。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用適用於 Amazon S3 容器儲存介面 (CSI) 驅動程式的掛載點
考量事項
-
Amazon S3 CSI 驅動程式的掛載點目前與 Windows 型容器映像不相容。
-
Amazon S3 CSI 驅動程式的掛載點目前與 Amazon EKS 混合節點不相容。
-
Amazon S3 CSI 驅動程式的掛載點不支援 AWS Fargate。不過,支援在 Amazon EC2 中執行的容器 (使用 Amazon EKS 或自訂 Kubernetes 安裝)。
-
Amazon S3 CSI 驅動程式的掛載點僅支援靜態佈建。不支援動態佈建或建立新儲存貯體。
注意
靜態佈建是指使用
PersistentVolume
物件bucketName
中指定為 的現有 Amazon S3 儲存貯volumeAttributes
體。如需詳細資訊,請參閱 GitHub 上的靜態佈建。 -
使用適用於 Amazon S3 CSI 驅動程式的掛載點掛載的磁碟區不支援所有 POSIX 檔案系統功能。如需檔案系統行為的詳細資訊,請參閱 GitHub 上 Amazon S3 檔案系統行為的掛載點
。
先決條件
-
叢集的現有 AWS Identity and Access Management (IAM) OpenID Connect (OIDC) 提供者。若要判定您是否已經擁有一個,或是要建立一個,請參閱 為您的叢集建立 IAM OIDC 身分提供者。
-
在您的裝置或 AWS CloudShell 上安裝和設定 CLI AWS 的 2.12.3 版或更新版本。
-
kubectl
命令列工具安裝在您的裝置或 AWS CloudShell 上。該版本可以與叢集的 Kubernetes 版本相同,也可以比您叢集的 Kubernetes 版本更早或更晚一個次要版本。例如,如果您的叢集版本為1.29
,則可以搭配使用kubectl
1.28
、1.29
或1.30
版。若要安裝或升級kubectl
,請參閱 設定 kubectl和 eksctl。
建立 IAM 政策
Amazon S3 CSI 驅動程式的掛載點需要 Amazon S3 許可才能與您的檔案系統互動。此節將介紹如何建立可授予必要許可的 IAM 政策。
下列範例政策遵循掛載點的 IAM 許可建議。或者,您可以使用 AWS 受管政策 AmazonS3FullAccess
如需掛載點建議許可的詳細資訊,請參閱 GitHub 上的掛載點 IAM 許可
-
開啟位於 https://console.aws.amazon.com/iam/
的 IAM 主控台。 -
在左側導覽窗格中選擇 Policies (政策)。
-
在政策頁面上,選擇建立政策。
-
對於政策編輯器,選擇 JSON。
-
在政策編輯器下,複製並貼上以下內容:
重要
將
amzn-s3-demo-bucket1
取代為您自己 Amazon S3 儲存貯體的名稱。{ "Version": "2012-10-17", "Statement": [ { "Sid": "MountpointFullBucketAccess", "Effect": "Allow", "Action": [ "s3:ListBucket" ], "Resource": [ "arn:aws: s3:::amzn-s3-demo-bucket1" ] }, { "Sid": "MountpointFullObjectAccess", "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:AbortMultipartUpload", "s3:DeleteObject" ], "Resource": [ "arn:aws: s3:::amzn-s3-demo-bucket1/*" ] } ] }
Amazon S3 Express One Zone 儲存類別引進的目錄儲存貯體,使用與一般用途儲存貯體不同的身分驗證機制。您應該使用
s3:*
動作,而不是使用s3express:CreateSession
動作。如需目錄儲存貯體的資訊,請參閱《Amazon S3 使用者指南》中的目錄儲存貯體。以下是您將用於目錄儲存貯體的最低權限政策範例。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3express:CreateSession", "Resource": "arn:aws: s3express:us-west-2:111122223333:bucket/amzn-s3-demo-bucket1--usw2-az1--x-s3" } ] }
-
選擇 Next (下一步)。
-
在檢閱與建立頁面上,為您的政策命名。本範例逐步教學使用的名稱是
AmazonS3CSIDriverPolicy
。 -
選擇 建立政策。
建立 IAM 角色
Amazon S3 CSI 驅動程式的掛載點需要 Amazon S3 許可才能與您的檔案系統互動。此節將介紹如何建立 IAM 角色以委派這些許可。若要建立此角色,您可以使用下列其中一個工具:
注意
IAM 政策 AmazonS3CSIDriverPolicy
於上一節建立。
eksctl
使用 建立 Amazon S3 CSI 驅動程式 IAM 角色的掛載點 eksctl
若要建立 IAM 角色和 Kubernetes 服務帳戶,請執行下列命令。這些命令也會將 AmazonS3CSIDriverPolicy
IAM 政策連接至角色、使用 IAM 角色的 Amazon Resource Name (ARNs3-csi-controller-sa
) 標註 Kubernetes 服務帳戶 (),並將 Kubernetes 服務帳戶名稱新增至 IAM 角色的信任政策。
CLUSTER_NAME=my-cluster
REGION=region-code
ROLE_NAME=AmazonEKS_S3_CSI_DriverRole
POLICY_ARN=AmazonEKS_S3_CSI_DriverRole_ARN
eksctl create iamserviceaccount \
--name s3-csi-driver-sa \
--namespace kube-system \
--cluster $CLUSTER_NAME \
--attach-policy-arn $POLICY_ARN \
--approve \
--role-name $ROLE_NAME \
--region $REGION \
--role-only
AWS Management Console
-
開啟位於 https://console.aws.amazon.com/iam/
的 IAM 主控台。 -
在左側導覽窗格中,選擇 Roles (角色)。
-
在 Roles (角色) 頁面上,選擇 Create role (建立角色)。
-
在 Select trusted entity (選取信任的實體) 頁面上,執行以下作業:
-
在 Trusted entity type (信任的實體類型) 區段中,選擇 Web identity (Web 身分)。
-
對於 Identity provider (身分提供者),為您的叢集選擇 OpenID Connect provider URL (OpenID Connect 供應商 URL)(如 Amazon EKS Overview (概觀) 下所示)。
如果沒有顯示 URLs,請檢閱先決條件。
-
針對 Audience (對象),選擇
sts.amazonaws.com
。 -
選擇 Next (下一步)。
-
-
在 Add permissions (新增許可) 頁面上,執行以下作業:
-
在篩選政策方塊中,輸入 AmazonS3CSIDriverPolicy。
注意
此政策於上一節建立。
-
勾選在搜尋中傳回的
AmazonS3CSIDriverPolicy
結果左側的核取方塊。 -
選擇 Next (下一步)。
-
-
在 Name, review, and create (命名、檢閱和建立) 頁面上,執行以下作業:
-
針對角色名稱,輸入角色的唯一名稱,例如 AmazonEKS_S3_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:s3-csi-driver-sa"
-
確定運算
Condition
子設定為"StringEquals"
。 -
選擇 Update 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 角色,將 Kubernetes 服務帳戶授予
AssumeRoleWithWebIdentity
動作。-
將下列內容複製到名為
aws-s3-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:sub": "system:serviceaccount:kube-system:s3-csi-driver-sa", "oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:aud": "sts.amazonaws.com" } } } ] }
-
建立角色。您可以將
AmazonEKS_S3_CSI_DriverRole
變更為不同的名稱,但如果您這麼做,請務必在後續步驟中也進行變更。aws iam create-role \ --role-name AmazonEKS_S3_CSI_DriverRole \ --assume-role-policy-document file://"aws-s3-csi-driver-trust-policy.json"
-
-
使用以下命令將先前建立的 IAM 政策連接至角色。
aws iam attach-role-policy \ --policy-arn arn:aws: iam::aws:policy/AmazonS3CSIDriverPolicy \ --role-name AmazonEKS_S3_CSI_DriverRole
注意
IAM 政策
AmazonS3CSIDriverPolicy
於上一節建立。 -
如果您要將驅動程式安裝為 Amazon EKS 附加元件,請略過此步驟。對於驅動程式的自我管理安裝,請建立 Kubernetes 服務帳戶,這些帳戶會標註您建立之 IAM 角色的 ARN。
-
將下列內容儲存到名為
mountpoint-s3-service-account.yaml
的檔案中。使用您的帳戶 ID 取代111122223333
。--- apiVersion: v1 kind: ServiceAccount metadata: labels: app.kubernetes.io/name: aws-mountpoint-s3-csi-driver name: mountpoint-s3-csi-controller-sa namespace: kube-system annotations: eks.amazonaws.com/role-arn: arn:aws: iam::111122223333:role/AmazonEKS_S3_CSI_DriverRole
-
在您的叢集上建立 Kubernetes 服務帳戶。Kubernetes 服務帳戶 (
mountpoint-s3-csi-controller-sa
) 會以您建立的 IAM 角色標註,名為AmazonEKS_S3_CSI_DriverRole
。kubectl apply -f mountpoint-s3-service-account.yaml
注意
當您在此程序中部署外掛程式時,其會建立並設定為使用名為
s3-csi-driver-sa
的服務帳戶。
-
安裝適用於 Amazon S3 CSI 驅動程式的掛載點
您可以透過 Amazon EKS 附加元件安裝適用於 Amazon S3 CSI 驅動程式的掛載點。您可以使用下列工具將附加元件新增至叢集:
或者,您也可以將 Amazon S3 CSI 驅動程式的掛載點安裝為自我管理安裝。如需執行自我管理安裝的說明,請參閱 GitHub 上的安裝
從 開始v1.8.0
,您可以設定 CSI 驅動程式的 Pod 可容忍的污點。若要執行此作業,請指定一組自訂的污點,以搭配 來容忍,node.tolerations
或使用 來清理所有污點node.tolerateAllTaints
。如需詳細資訊,請參閱 Kubernetes 文件中的 標記和容錯
eksctl
使用 新增 Amazon S3 CSI 附加元件 eksctl
執行下列命令。將 my-cluster
取代為您的叢集名稱、將 111122223333
取代為您的 帳戶 ID,並將 AmazonEKS_S3_CSI_DriverRole
取代為先前建立的 IAM 角色名稱。
eksctl create addon --name aws-mountpoint-s3-csi-driver --cluster my-cluster \ --service-account-role-arn arn:aws: iam::111122223333:role/AmazonEKS_S3_CSI_DriverRole --force
如果您移除 --force
選項,且任何 Amazon EKS 附加元件設定與您現有的設定衝突,則更新 Amazon EKS 附加元件會失敗,而且您會收到錯誤訊息,協助您解決衝突。指定此選項之前,請確定 Amazon EKS 附加元件不會管理您需要管理的設定,因為這些設定會由此選項覆寫。如需有關此設定之其他選項的詳細資訊,請參閱 eksctl
文件中的 Addons
您可以透過eksctl
組態檔案自訂 。如需詳細資訊,請參閱 eksctl
文件中的使用組態值
# config.yaml
...
addons:
- name: aws-mountpoint-s3-csi-driver
serviceAccountRoleARN: arn:aws: iam::111122223333:role/AmazonEKS_S3_CSI_DriverRole
configurationValues: |-
node:
tolerateAllTaints: true
AWS Management Console
-
開啟 Amazon EKS 主控台
。 -
在左側導覽窗格中選擇叢集。
-
選擇您要設定 Amazon S3 CSI 附加元件掛載點的叢集名稱。
-
選擇附加元件索引標籤。
-
選擇取得更多附加元件。
-
在選取附加元件頁面上,執行下列動作:
-
在 Amazon EKS-addons 區段中,選取 Amazon S3 CSI 驅動程式掛載點核取方塊。
-
選擇 Next (下一步)。
-
-
在設定選取的附加元件設定頁面上,執行以下操作:
-
選取您要使用的版本。
-
針對選取 IAM 角色,選取您連接 Amazon S3 CSI 驅動程式 IAM 政策掛載點的 IAM 角色名稱。
-
(選用) 展開選用組態設定後,更新衝突解決方法。如果您選取覆寫,則可以使用 Amazon EKS 附加元件設定覆寫現有附加元件的一或多個設定。如果您未啟用此選項,且與現有設定發生衝突,則操作會失敗。您可以使用產生的錯誤訊息對此衝突進行疑難排解。選取此選項之前,請確定 Amazon EKS 附加元件不會管理自我管理所需的設定。
-
(選用) 展開選用組態設定後,在組態值欄位中設定容錯。
-
選擇 Next (下一步)。
-
-
在檢閱並新增頁面上,選擇建立。附加元件安裝完成後,您會看到已安裝的附加元件。
AWS CLI
使用 CLI 新增 Amazon S3 CSI AWS 附加元件的掛載點
執行下列命令。將 my-cluster
取代為您的叢集名稱、將 111122223333
取代為您的 帳戶 ID,並將 AmazonEKS_S3_CSI_DriverRole
取代為先前建立的角色名稱。
aws eks create-addon --cluster-name my-cluster --addon-name aws-mountpoint-s3-csi-driver \ --service-account-role-arn arn:aws: iam::111122223333:role/AmazonEKS_S3_CSI_DriverRole
您可以使用 --configuration-values
旗標自訂 命令。下列替代範例顯示如何容忍所有污點。
aws eks create-addon --cluster-name my-cluster --addon-name aws-mountpoint-s3-csi-driver \
--service-account-role-arn arn:aws: iam::111122223333:role/AmazonEKS_S3_CSI_DriverRole \
--configuration-values '{"node":{"tolerateAllTaints":true}}'
設定 Amazon S3 的掛載點
在大多數情況下,您只能使用儲存貯體名稱來設定 Amazon S3 的掛載點。如需設定 Amazon S3 掛載點的說明,請參閱在 GitHub 上設定 Amazon S3 掛載點
部署範例應用程式
您可以將靜態佈建部署到現有 Amazon S3 儲存貯體上的驅動程式。如需詳細資訊,請參閱 GitHub 上的靜態佈建
移除 Amazon S3 CSI 驅動程式的掛載點
有兩種選項可以用來移除 Amazon EKS 附加元件。
-
Preserve add-on software on your cluster (在叢集上保留附加元件軟體):此選項會移除任何設定的 Amazon EKS 管理。其也會移除 Amazon EKS 通知您更新的功能,並在您啟動更新後自動更新 Amazon EKS 附加元件。不過,該選項會保留您叢集上的附加元件軟體。此選項會使附加元件成為自我管理安裝,而不是 Amazon EKS 附加元件。使用此選項,附加元件不會停機。本程序中的命令使用此選項。
-
Remove add-on software entirely from your cluster (從叢集中完全移除附加元件軟體):只有叢集上沒有資源依賴於附加元件提供的功能時,我們才會建議您將 Amazon EKS 附加元件從叢集中移除。若要執行此選項,請從您在此程序中使用的命令刪除
--preserve
。
如果附加元件有與其相關聯的 IAM 帳戶,則不會移除 IAM 帳戶。
您可以使用下列工具來移除 Amazon S3 CSI 附加元件:
eksctl
使用 移除 Amazon S3 CSI 附加元件 eksctl
將 my-cluster
取代為您的叢集名稱,然後執行下列命令。
eksctl delete addon --cluster my-cluster --name aws-mountpoint-s3-csi-driver --preserve
AWS Management Console
-
開啟 Amazon EKS 主控台
。 -
在左側導覽窗格中選擇叢集。
-
選取要移除 Amazon EBS CSI 附加元件的叢集名稱。
-
選擇附加元件索引標籤。
-
選擇 Amazon S3 CSI 驅動程式的掛載點。
-
選擇移除。
-
在移除:aws-mountpoint-s3-csi-driver 確認對話方塊中,執行下列動作:
-
若希望 Amazon EKS 停止管理附加元件的設定,請選取在叢集上保留。若要在叢集上保留附加元件軟體,請執行此動作。如此一來,您就可以自行管理附加元件的所有設定。
-
輸入
aws-mountpoint-s3-csi-driver
。 -
選取 Remove (移除)。
-
AWS CLI
使用 CLI 移除 Amazon S3 CSI AWS 附加元件
將 my-cluster
取代為您的叢集名稱,然後執行下列命令。
aws eks delete-addon --cluster-name my-cluster --addon-name aws-mountpoint-s3-csi-driver --preserve