協助改善此頁面
想要為此使用者指南做出貢獻嗎? 捲動至此頁面底部,然後選取 [編輯此頁面於] GitHub。您的貢獻將有助於使我們的用戶指南更適合所有人。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Amazon 存儲Kubernetes卷 EBS
Amazon 彈性區塊存放區 (AmazonEBS) 容器儲存界面 (CSI) 驅動程式會將 Amazon EBS 磁碟區的生命週期作為您建立的Kubernetes磁碟區的儲存來管理。Amazon EBS CSI 驅動程式會為這些類型的EBS磁碟區建立 Amazon Kubernetes 磁碟區:一般暫時磁碟區和持久磁碟區。
考量事項
若要使用 Amazon EBS CSI 驅動程式的快照功能,您必須在安裝附加元件之前或之後安裝外部快照。必須依照下列順序安裝外部快照元件:
如需詳細資訊,請參閱上的CSI快照。 GitHub
必要條件
-
現有的叢集。若要查看所需的平台版本,請執行下列命令。
aws eks describe-addon-versions --addon-name aws-ebs-csi-driver
-
叢集的現有 AWS Identity and Access Management OpenID Connect (IAMOIDC) () 提供者。若要判定您是否已經擁有一個,或是要建立一個,請參閱 為您的叢集建立IAMOIDC提供者。
-
若您使用叢集範圍受限制的 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 上的設定驅動程式許可。
下列程序說明如何建立IAM角色,並將 AWS
受管理的原則附加至該角色。您可以使用 eksctl
、 AWS Management Console或 AWS CLI。
本程序中的特定步驟是為了將驅動程式當做 Amazon EKS 附加元件使用而撰寫。需要執行不同的步驟,才能將驅動程式用作自我管理附加元件。如需詳細資訊,請參閱 GitHub 上的設定驅動程式許可。
- eksctl
-
若要使用建立您的 Amazon EBS CSI 外掛程式IAM角色 eksctl
-
建立IAM角色並附加原則。 AWS 維護受 AWS
管理的政策,或者您可以建立自己的自訂原則。您可以使用下列命令建立IAM角色並附加 AWS 受管理的策略。Replace (取代) 我的集群
使用您的群集的名稱。命令會部署建立IAM角色並將IAM原則附加至其中的 AWS CloudFormation 堆疊。如果您的叢集位於
AWS GovCloud (美國東部) 或 AWS GovCloud (美國西部) AWS 區域,請取代arn:aws:
為. arn:aws-us-gov:
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 GovCloud (美國東部) 或 AWS GovCloud (美國西部) AWS 區域,請取代arn:aws:
為. arn:aws-us-gov:
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
-
若要建立您的 Amazon EBS CSI 外掛程式IAM角色 AWS Management Console
在開啟IAM主控台https://console.aws.amazon.com/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 (命名、檢閱和建立) 頁面上,執行以下作業:
-
針對 Role name (角色名稱),為您的角色輸入唯一名稱 (例如 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引標籤。
-
將下列程式碼複製並貼到編輯器中,並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
"]
}
]
}
-
選擇下一步:標籤。
-
在 Add tags (Optional) (新增標籤 (選用)) 頁面上,選擇 Next: Review (下一步:檢閱)。
-
在 Name (名稱) 中輸入您的政策名稱 (例如 KMS_Key_For_Encryption_On_EBS_Policy
)。
-
選擇 建立政策。
-
在左側導覽窗格中,選擇 Roles (角色)。
-
選擇 AmazonEKS_EBS_CSI_DriverRole
在控制台中打開它進行編輯。
-
在新增許可下拉式清單中,選擇連接政策。
-
在 Filter policies (篩選政策) 方塊中,輸入 KMS_Key_For_Encryption_On_EBS_Policy
。
-
勾選在搜尋中傳回的 KMS_Key_For_Encryption_On_EBS_Policy
左側的核取方塊。
-
選擇連接政策。
- AWS CLI
-
若要建立您的 Amazon EBS CSI 外掛程式IAM角色 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
。如果您的叢集位於
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": {
"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 GovCloud (美國東部) 或 AWS GovCloud (美國西部) AWS 區域,請取代arn:aws:
為. arn:aws-us-gov:
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 GovCloud (美國東部) 或 AWS GovCloud (美國西部) AWS 區域,請取代arn:aws:
為. arn:aws-us-gov:
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 許可的 Kubernetes clusterrole
。
步驟 2:獲取 Amazon EBS CSI 驅動程序
我們建議您透過 Amazon EKS 附加元件安裝 Amazon EBS CSI 驅動程式,以提高安全性並減少工作量。若要將 Amazon EKS 附加元件新增至叢集,請參閱創建一個 Amazon EKS 插件。如需附加元件的詳細資訊,請參閱 Amazon EKS 插件。
或者,如果您想要 Amazon EBS CSI 驅動程式的自我管理安裝,請參閱在上GitHub安裝。
步驟 3:部署範例應用程式
您可以部署各種範例應用程式,再視需要進行修改。如需詳細資訊,請參閱中的Kubernetes範例GitHub。