Amazon EKS 节点 IAM 角色 - Amazon EKS

Amazon EKS 节点 IAM 角色

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

注意

Amazon EC2 节点组必须具有与 Fargate 配置文件不同的 IAM 角色。有关更多信息,请参阅 Pod 执行角色

检查现有节点角色

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

在 IAM 控制台中检查 eksNodeRole

  1. 访问:https://console.aws.amazon.com/iam/,打开 IAM 控制台。

  2. 在导航窗格中,选择 Roles(角色)

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

  4. 选择权限

  5. 确保将 AmazonEKSWorkerNodePolicyAmazonEC2ContainerRegistryReadOnly 托管策略附加到此角色。如果已经附加策略,则您的 Amazon EKS 节点已经正确配置。

    注意

    如果 AmazonEKS_CNI_Policy 策略已附加到角色,我们建议删除此策略并改为将其附加到映射到 aws-node Kubernetes 服务账户的 IAM 角色。有关更多信息,请参阅 配置 Amazon 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 Management Console 或 AWS CloudFormation 创建节点 IAM 角色。选择带有要用于创建角色的工具名称的选项卡。

AWS Management Console

在 IAM 控制台中创建您的Amazon EKS 节点角色

  1. 访问:https://console.aws.amazon.com/iam/,打开 IAM 控制台。

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

  3. Choose a use case(选择使用案例)下的 Common use cases(常用案例)列表中,选择 EC2

  4. 选择 Next: Permissions(下一步: 权限)。

  5. Filter policies (筛选器策略) 框中,输入 AmazonEKSWorkerNodePolicy

  6. 选中 AmazonEKSWorkerNodePolicy左侧的复选框。

  7. Filter policies (筛选器策略) 框中,输入 AmazonEC2ContainerRegistryReadOnly

  8. 选中 AmazonEC2ContainerRegistryReadOnly 左侧的复选框。

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

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

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

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

  13. 对于 Role name (角色名称),为角色输入唯一名称,例如 NodeInstanceRole

  14. 对于 Role description(角色描述),请将当前文本替换为描述性文本,例如 Amazon EKS - Node Group Role

  15. 选择 Create role(创建角色)。

AWS CloudFormation

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

  1. 打开 AWS CloudFormation 控制台,地址:https://console.aws.amazon.com/cloudformation

  2. 选择创建堆栈

  3. 选择 With new resources (standard)(使用新资源(标准))。

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

  5. 将以下 URL 粘贴到 Amazon S3 URL 文本区域:

    https://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-10-29/amazon-eks-nodegroup-role.yaml
  6. 选择 Next(下一步)两次。

  7. 对于 Specify stack details(指定堆栈详细信息)页面的 Stack name(堆栈名称),输入一个名称,如 eks-node-group-instance-role

  8. 选择 Next (下一步)

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

  10. 选择 Next (下一步)

  11. Review(审核)页面上,选中 Capabilities(功能)部分中的复选框。

  12. 选择创建堆栈

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

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

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