Amazon EKS 节点 IAM 角色 - Amazon EKS
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon EKS 节点 IAM 角色

节点 Amazon EKS 守护程序代表您调用 kubelet AWS。APIs节点通过 IAM 实例配置文件和关联的策略接收这些 API 调用的权限。您必须先为节点创建它们启动时要使用的 IAM 角色,然后才能启动节点并将它们注册到集群。此要求适用于通过 Amazon 提供的经 Amazon EKS 优化的 AMI 启动的节点,也适用于您打算使用的任何其他节点 AMIs。在创建节点之前,您必须使用以下 IAM 策略创建 IAM 角色:

检查现有节点角色

您可以使用以下过程检查并确定您的账户是否已有 Amazon EKS 节点角色。

在 IAM 控制台中检查 NodeInstanceRole

  1. 通过以下网址打开 IAM 控制台:https://console.amazonaws.cn/iam/

  2. 在导航面板中,选择 Roles

  3. 在角色列表中搜索 NodeInstanceRole。 如果包含 NodeInstanceRole 的角色不存在,请参阅创建 Amazon EKS 节点 IAM 角色以创建角色。如果包含 NodeInstanceRole 的角色确实存在,请选择该角色以查看附加的策略。

  4. 选择 Permissions

  5. 确保将 AmazonEKSWorkerNodePolicyAmazonEC2ContainerRegistryReadOnly 托管策略附加到角色。如果附加这些策略,则将正确配置 Amazon EKS 节点角色。

    注意

    如果 _CNI_PolicyAmazonEKS 策略已附加到角色,我们建议将其删除并附加到映射到 Kubernetes 服务账户的 IAM 角色。aws-node有关更多信息,请参阅配置 VPC CNI 插件以使用服务账户的 IAM 角色

  6. 选择 Trust Relationships,然后选择 Edit Trust Relationship

  7. 验证信任关系是否包含以下策略。如果信任关系符合以下策略,请选择 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 节点角色

  1. 通过以下网址打开 IAM 控制台:https://console.amazonaws.cn/iam/

  2. 选择 Roles,然后选择 Create role

  3. Choose a use case 下的 Common use cases 列表中选择 EC2,然后选择 Next:权限。

  4. Filter policies (筛选策略) 框中,输入 AmazonEKSWorkerNodePolicy。 选中 AmazonEKSWorkerNodePolicy 左侧的框。

  5. Filter policies (筛选策略) 框中,输入 AmazonEC2ContainerRegistryReadOnly。 选中 AmazonEC2ContainerRegistryReadOnly 左侧的框。

  6. 必须向此角色或映射到 Kubernetes 服务账户的其他角色附加 AmazonEKS_CNI_Policy 策略。aws-node我们建议将策略分配给与 Kubernetes 服务账户关联的角色,而不是将其分配给此角色。有关更多信息,请参阅配置 VPC CNI 插件以使用服务账户的 IAM 角色

  7. 选择 Next: (下一步:)。 标签

  8. (可选)通过以键值对的形式附加标签来向角色添加元数据。有关在 IAM 中使用标签的更多信息,请参阅 中的标记 IAM 实体。IAM 用户指南

  9. 选择 Next: (下一步:)。 审核

  10. 对于 Role name (角色名称),输入您的角色的唯一名称,例如 NodeInstanceRole。 对于 Role description (角色描述),请将当前文本替换为描述性文本,例如 Amazon EKS - Node Group Role,然后选择 Create role (创建角色)

使用 Amazon EKS 创建 AWS CloudFormation 节点角色

  1. https://console.amazonaws.cn/cloudformation 打开 AWS CloudFormation 控制台。

  2. 选择 Create stack (创建堆栈),然后选择 With new resources (standard) (使用新资源(标准))

  3. 对于 Specify template (指定模板),选择 Amazon S3 URL

  4. 将与您的集群所在的区域对应的 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
  5. Specify stack details (指定堆栈详细信息) 页面上,对于 Stack name (堆栈名称) 输入一个名称,如 eks-node-group-instance-role ,然后选择 Next (下一步)

  6. (可选)在 Configure stack options (配置堆栈选项) 页面上,您可以选择为堆栈资源添加标签。选择 Next (下一步)

  7. Review (审核) 页面上,选中 Capabilities (功能) 部分中的复选框,然后选择 Create stack (创建堆栈)

  8. 创建堆栈后,在控制台中选中它,然后选择 Outputs (输出)

  9. 记录已创建的 角色的 NodeInstanceRoleIAM 值。在您创建节点组时需要此功能。

  10. (可选,但推荐)上一步中由 IAM 模板附加到角色的 AWS CloudFormation 策略之一是 AmazonEKS_CNI_Policy 托管策略。该策略必须附加到此角色或与用于 aws-node VPC CNI 插件的 Kubernetes Amazon EKS 服务账户关联的角色。我们建议将策略分配给与 Kubernetes 服务账户关联的角色。有关更多信息,请参阅配置 VPC CNI 插件以使用服务账户的 IAM 角色