本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon EKS 節點 IAM 角色
Amazon EKS kubelet
節點常駐程式會代表您呼叫 AWS APIs。節點會透過 API 執行個體設定檔和相關政策接收這些 IAM 呼叫的許可。在啟動節點並將其註冊到叢集之前,您必須為這些節點建立 IAM 角色,以便在其啟動時使用。此要求適用於使用 Amazon 提供的 Amazon EKS 最佳化 AMI 或您打算使用的任何其他節點 AMIs 啟動的節點。此外,此要求皆適用於受管節點群組和自我管理節點。
注意
您不能使用用來建立任何叢集的相同角色。
建立節點之前,您必須建立具有下列許可的 IAM 角色:
-
在 VPC 中
kubelet
描述 Amazon EC2 資源的許可,例如 AmazonEKSWorkerNodePolicy Word政策提供的 。此政策也提供 Amazon EKS Pod Identity Agent 的許可。 -
准許
kubelet
使用來自 Amazon Elastic Container Registry (Amazon ECR) 的容器映像,例如由 AmazonEC2ContainerRegistryPullOnly 政策提供。需要從 Amazon Elastic Container Registry (Amazon ECR) 使用容器映像的許可,因為用於聯網的內建附加元件會執行使用 Amazon ECR 的容器映像的 Pod。 -
(選用) Amazon EKS Pod Identity Agent 使用
eks-auth:AssumeRoleForPodIdentity
動作來擷取 Pod 憑證的許可。如果您不使用 AmazonEKSWorkerNodePolicyWord,除了 EC2 許可之外,還必須提供此許可才能使用 EKS Pod Identity。* (Optional) If you don’t use IRSA or EKS Pod Identity to give permissions to the VPC CNI pods, then you must provide permissions for the VPC CNI on the instance role. You can use either the ` AmazonEKS_CNI_Policy
受管政策 (如果您使用 IPv4` 系列建立叢集) 或您建立的 IPv6 政策 (如果您使用IPv6
系列建立叢集)。但是,我們建議您不要將政策連接至 Amazon VPC CNI 附加元件專用的個別角色,而不是將政策附加至此角色。如需為 Amazon VPC CNI 附加元件建立個別角色的詳細資訊,請參閱 設定 Amazon VPC CNI 外掛程式以使用 IRSA。
注意
Amazon EC2 節點群組必須具有與 Fargate 設定檔不同的 IAM 角色。如需詳細資訊,請參閱Amazon EKS Pod 執行 IAM 角色。
檢查現有的節點角色
您可以使用下列程序來檢查您的帳戶是否已具有 Amazon EKS 節點角色。
-
在 IAM 開啟 https://console.aws.amazon.com/iam/
主控台。 -
在左側導覽窗格中,選擇 Roles (角色)。
-
搜尋
eksNodeRole
、AmazonEKSNodeRole
或NodeInstanceRole
的角色清單。如果不存在具有這些名稱之一的角色,請參閱 建立 Amazon EKS 節點 IAM 角色 以建立角色。如果包含eksNodeRole
、AmazonEKSNodeRole
或NodeInstanceRole
的角色存在,請選取角色以檢視連接的政策。 -
選擇許可。
-
確保 AmazonEKSWorkerNodePolicy Word和 AmazonEC2ContainerRegistryPullOnly 受管政策連接至角色,或自訂政策以最低許可連接。
注意
如果 AmazonEKS_CNI_Policy 政策已連接至角色,建議您將其移除,並將其連接至映射至 的 IAM 角色
aws-node
Kubernetes 服務帳戶。如需詳細資訊,請參閱設定 Amazon VPC CNI 外掛程式以使用 IRSA。 -
選擇 Trust Relationships (信任關係),然後選擇 Edit trust policy (編輯信任政策)。
-
確認信任關係包含下列政策。如果信任關係符合下列政策,請選擇 Cancel (取消)。如果信任關係不相符,請將政策複製到編輯信任政策視窗中,然後選擇更新政策。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
建立 Amazon EKS 節點 IAM 角色
您可以使用 AWS Management Console 或 IAM 建立節點 AWS CLI 角色。
- AWS Management Console
-
-
在 IAM 開啟 https://console.aws.amazon.com/iam/
主控台。 -
在左側導覽窗格中,選擇 Roles (角色)。
-
在 Roles (角色) 頁面上,選擇 Create role (建立角色)。
-
在 Select trusted entity (選取信任的實體) 頁面上,執行以下作業:
-
在信任的實體類型區段中,選擇 AWS 服務。
-
在 Use case (使用案例) 中,選擇 EC2。
-
選擇 Next (下一步)。
-
-
在新增許可頁面上,連接自訂政策或執行下列動作:
-
在 Filter policies (篩選政策) 方塊中,輸入
AmazonEKSWorkerNodePolicy
。 -
選取搜尋結果中 AmazonEKSWorkerNodePolicy Word左側的核取方塊。
-
選擇 Clear filters (清除篩選條件)。
-
在 Filter policies (篩選政策) 方塊中,輸入
AmazonEC2ContainerRegistryPullOnly
。 -
在搜尋結果中選取 AmazonEC2ContainerRegistryPullOnly 左側的核取方塊。
AmazonEKS_CNI_Policy 受管政策或您建立的 IPv6 政策也必須連接至此角色或對應至 的不同角色
aws-node
Kubernetes 服務帳戶。建議您將政策指派給與 相關聯的角色 Kubernetes 服務帳戶,而不是將其指派給此角色。如需詳細資訊,請參閱設定 Amazon VPC CNI 外掛程式以使用 IRSA。 -
選擇 Next (下一步)。
-
-
在 Name, review, and create (命名、檢閱和建立) 頁面上,執行以下作業:
-
針對 Role name (角色名稱),為您的角色輸入唯一名稱 (例如
AmazonEKSNodeRole
)。 -
針對 Description (描述),請以描述性文字 (例如
Amazon EKS - Node role
) 取代目前的文字。 -
藉由連接標籤做為鍵值對,在新增標籤 (選用) 下將中繼資料新增至角色。如需在 IAM 中使用標籤的詳細資訊,請參閱 IAM 使用者指南中的標記 Word 資源。 IAM
-
選擇建立角色。
-
-
- AWS CLI
-
-
執行下列命令以建立
node-role-trust-relationship.json
檔案。cat >node-role-trust-relationship.json <<EOF { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } EOF
-
建立 IAM 角色。
aws iam create-role \ --role-name AmazonEKSNodeRole \ --assume-role-policy-document file://"node-role-trust-relationship.json"
-
將兩個必要的 IAM 受管政策連接至 IAM 角色。
aws iam attach-role-policy \ --policy-arn arn:aws: iam::aws:policy/AmazonEKSWorkerNodePolicy \ --role-name AmazonEKSNodeRole aws iam attach-role-policy \ --policy-arn arn:aws: iam::aws:policy/AmazonEC2ContainerRegistryPullOnly \ --role-name AmazonEKSNodeRole
-
根據您建立叢集的 IP 系列,將下列其中一個 IAM 政策連接至 IAM 角色。政策必須連接至此角色或與 相關聯的角色 Kubernetes
aws-node
用於 的服務帳戶 Amazon VPC CNI plugin for Kubernetes。 建議您將政策指派給與 相關聯的角色 Kubernetes 服務帳戶。將政策指派給與 相關聯的角色 Kubernetes 服務帳戶,請參閱 設定 Amazon VPC CNI 外掛程式以使用 IRSA。-
IPv4
aws iam attach-role-policy \ --policy-arn arn:aws: iam::aws:policy/AmazonEKS_CNI_Policy \ --role-name AmazonEKSNodeRole
-
IPv6
-
複製下列文字並將它儲存至名為
vpc-cni-ipv6-policy.json
的檔案。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:AssignIpv6Addresses", "ec2:DescribeInstances", "ec2:DescribeTags", "ec2:DescribeNetworkInterfaces", "ec2:DescribeInstanceTypes" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": [ "arn:aws: ec2:*:*:network-interface/*" ] } ] }
-
建立 IAM 政策。
aws iam create-policy --policy-name AmazonEKS_CNI_IPv6_Policy --policy-document file://vpc-cni-ipv6-policy.json
-
將 IAM 政策連接至 IAM 角色。Replace (取代)
111122223333
使用您的帳戶 ID。aws iam attach-role-policy \ --policy-arn arn:aws: iam::111122223333:policy/AmazonEKS_CNI_IPv6_Policy \ --role-name AmazonEKSNodeRole
-
-
-