Amazon EKS 集群 IAM 角色
对于每个集群,均需要 Amazon EKS 集群 IAM 角色。由 Amazon EKS 托管的 Kubernetes 集群使用此角色来管理节点,而旧版云提供商
必须先使用以下任一 IAM policy 创建 IAM 角色,然后才能创建 Amazon EKS 集群:
-
自定义 IAM policy。随后的最低权限允许 Kubernetes 集群管理节点,但不允许传统 Cloud Provider
创建带有 Elastic Load Balancing 的负载均衡器。您的自定义 IAM policy必须至少具有以下权限: { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:CreateTags" ], "Resource": "arn:aws:ec2:*:*:instance/*", "Condition": { "ForAnyValue:StringLike": { "aws:TagKeys": "kubernetes.io/cluster/*" } } }, { "Effect": "Allow", "Action": [ "ec2:DescribeInstances", "ec2:DescribeNetworkInterfaces", "ec2:DescribeVpcs", "ec2:DescribeDhcpOptions", "ec2:DescribeAvailabilityZones", "ec2:DescribeInstanceTopology", "kms:DescribeKey" ], "Resource": "*" } ] }
注意
在 2023 年 10 月 3 日之前,每个集群的 IAM 角色都必须有 AmazonEKSClusterPolicy。
在 2020 年 4 月 16 日之前,AmazonEKSServicePolicy 和 AmazonEKSClusterPolicy 是必需的,建议的角色名称是 eksServiceRole
。有了 AWSServiceRoleForAmazonEKS
服务相关角色后,在 2020 年 4 月 16 日或之后创建的集群将不再需要 AmazonEKSServicePolicy 策略。
检查现有集群角色
可使用以下程序检查并确定您的账户是否已有 Amazon EKS 集群角色。
-
通过 https://console.aws.amazon.com/iam/
打开 IAM 控制台。 -
在左侧导航窗格中,选择 Roles(角色)。
-
在角色列表中搜索
eksClusterRole
。如果不存在包含eksClusterRole
的角色,请参阅 创建 Amazon EKS 集群角色 来创建角色。如果包含eksClusterRole
的角色确实存在,则选择角色以查看附加的策略。 -
选择权限。
-
确保将 AmazonEKSClusterPolicy 托管策略附加到此角色。如果附加该策略,则将正确配置 Amazon EKS 集群角色。
-
选择 Trust relationships(信任关系),然后选择 Edit trust policy(编辑信任策略)。
-
验证信任关系是否包含以下策略。如果信任关系符合以下策略,请选择 Cancel(取消)。如果信任关系不匹配,请将策略复制到编辑信任策略窗口并选择更新策略。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "eks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
创建 Amazon EKS 集群角色
要创建集群角色,您可以使用 AWS Management Console 或 AWS CLI。
- AWS Management Console
-
-
通过 https://console.aws.amazon.com/iam/
打开 IAM 控制台。 -
选择 Roles,然后选择 Create role。
-
在受信任的实体类型下,选择 AWS 服务。
-
从其它 AWS 服务的使用案例下拉列表中,选择 EKS。
-
为您的使用案例选择 EKS - Cluster(EKS - 集群),然后选择 Next(下一步)。
-
在 Add permissions(添加权限)选项卡上,选择 Next(下一步)。
-
对于 Role name(角色名称),请为角色输入唯一名称,例如
eksClusterRole
。 -
对于 Description(说明),请输入描述性文本,例如
Amazon EKS - Cluster role
。 -
选择 Create role(创建角色)。
-
- AWS CLI
-
-
将以下内容复制到名为
cluster-trust-policy.json
的文件中。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "eks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
-
创建角色。您可以将
eksClusterRole
替换为您选择的任何名称。aws iam create-role \ --role-name eksClusterRole \ --assume-role-policy-document file://"cluster-trust-policy.json"
-
将所需的 IAM policy 附加到角色。
aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/AmazonEKSClusterPolicy \ --role-name eksClusterRole
-