本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon EKS 节点 IAM 角色
节点 Amazon EKS 守护程序代表您调用 kubelet
AWS。APIs节点通过 IAM 实例配置文件和关联的策略接收这些 API 调用的权限。您必须先为节点创建它们启动时要使用的 IAM 角色,然后才能启动节点并将它们注册到集群。此要求适用于通过
Amazon 提供的经 Amazon EKS 优化的 AMI 启动的节点,也适用于您打算使用的任何其他节点 AMIs。在创建节点之前,您必须使用以下 IAM 策略创建
IAM 角色:
检查现有节点角色
您可以使用以下过程检查并确定您的账户是否已有 Amazon EKS 节点角色。
在 IAM 控制台中检查 NodeInstanceRole
-
通过以下网址打开 IAM 控制台:https://console.amazonaws.cn/iam/
。 -
在导航面板中,选择 Roles。
-
在角色列表中搜索
NodeInstanceRole
。 如果包含NodeInstanceRole
的角色不存在,请参阅创建 Amazon EKS 节点 IAM 角色以创建角色。如果包含NodeInstanceRole
的角色确实存在,请选择该角色以查看附加的策略。 -
选择 Permissions。
-
确保将 AmazonEKSWorkerNodePolicy 和 AmazonEC2ContainerRegistryReadOnly 托管策略附加到角色。如果附加这些策略,则将正确配置 Amazon EKS 节点角色。
注意 如果 _CNI_PolicyAmazonEKS 策略已附加到角色,我们建议将其删除并附加到映射到 Kubernetes 服务账户的 IAM 角色。
aws-node
有关更多信息,请参阅配置 VPC CNI 插件以使用服务账户的 IAM 角色。 -
选择 Trust Relationships,然后选择 Edit Trust Relationship。
-
验证信任关系是否包含以下策略。如果信任关系符合以下策略,请选择 Cancel。如果信任关系不符合,请将策略复制到 Policy Document 窗口中并选择 Update Trust Policy。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
创建 Amazon EKS 节点 IAM 角色
如果您按照AWS 管理控制台入门或开始使用 eksctl主题中的步骤创建了节点,则节点角色已存在,您无需手动创建。您可以使用 AWS 管理控制台或 AWS CloudFormation 为您的账户创建 Amazon EKS 节点角色(如果尚不具有此角色)。您可以使用 AWS 管理控制台或 AWS CloudFormation 创建节点角色。
在 Amazon EKS 控制台中创建 IAM 节点角色
-
通过以下网址打开 IAM 控制台:https://console.amazonaws.cn/iam/
。 -
选择 Roles,然后选择 Create role。
-
从 Choose a use case 下的 Common use cases 列表中选择 EC2,然后选择 Next:权限。
-
在 Filter policies (筛选策略) 框中,输入
AmazonEKSWorkerNodePolicy
。 选中 AmazonEKSWorkerNodePolicy 左侧的框。 -
在 Filter policies (筛选策略) 框中,输入 AmazonEC2ContainerRegistryReadOnly。 选中 AmazonEC2ContainerRegistryReadOnly 左侧的框。
-
必须向此角色或映射到 Kubernetes 服务账户的其他角色附加 AmazonEKS_CNI_Policy 策略。
aws-node
我们建议将策略分配给与 Kubernetes 服务账户关联的角色,而不是将其分配给此角色。有关更多信息,请参阅配置 VPC CNI 插件以使用服务账户的 IAM 角色。 -
选择 Next: (下一步:)。 标签。
-
(可选)通过以键值对的形式附加标签来向角色添加元数据。有关在 IAM 中使用标签的更多信息,请参阅 中的标记 IAM 实体。IAM 用户指南
-
选择 Next: (下一步:)。 审核。
-
对于 Role name (角色名称),输入您的角色的唯一名称,例如 NodeInstanceRole。 对于 Role description (角色描述),请将当前文本替换为描述性文本,例如 Amazon EKS - Node Group Role,然后选择 Create role (创建角色)。
使用 Amazon EKS 创建 AWS CloudFormation 节点角色
-
从 https://console.amazonaws.cn/cloudformation
打开 AWS CloudFormation 控制台。 -
选择 Create stack (创建堆栈),然后选择 With new resources (standard) (使用新资源(标准))。
-
对于 Specify template (指定模板),选择 Amazon S3 URL。
-
将与您的集群所在的区域对应的 URL 粘贴到 Amazon S3 URL 文本区域中,然后选择 Next (下一步) 两次:
-
区域之外的所有区域。中国
https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/amazon-eks-nodegroup-role.yaml
-
北京和宁夏 中国区域。
https://s3.cn-north-1.amazonaws.com.cn/amazon-eks//cloudformation/2020-10-29/amazon-eks-nodegroup-role.yaml
-
-
在 Specify stack details (指定堆栈详细信息) 页面上,对于 Stack name (堆栈名称) 输入一个名称,如 eks-node-group-instance-role ,然后选择 Next (下一步)。
-
(可选)在 Configure stack options (配置堆栈选项) 页面上,您可以选择为堆栈资源添加标签。选择 Next (下一步)。
-
在 Review (审核) 页面上,选中 Capabilities (功能) 部分中的复选框,然后选择 Create stack (创建堆栈)。
-
创建堆栈后,在控制台中选中它,然后选择 Outputs (输出)。
-
记录已创建的 角色的 NodeInstanceRoleIAM 值。在您创建节点组时需要此功能。
-
(可选,但推荐)上一步中由 IAM 模板附加到角色的 AWS CloudFormation 策略之一是 AmazonEKS_CNI_Policy 托管策略。该策略必须附加到此角色或与用于
aws-node
VPC CNI 插件的 Kubernetes Amazon EKS 服务账户关联的角色。我们建议将策略分配给与 Kubernetes 服务账户关联的角色。有关更多信息,请参阅配置 VPC CNI 插件以使用服务账户的 IAM 角色。