无法创建服务相关角色:AWSServiceRoleForAmazonEKSNodegroup 由于缺少“iam:CreateServiceLinkedRole”的权限

Failed to create service linked role: AWSServiceRoleForAmazonEKSNodegroup due to missing permissions for 'iam:CreateServiceLinkedRole

我在 AWS 中创建了 EKS 集群,我想为相应创建的集群创建节点组(工作节点),但出现错误 "Failed to create service linked role: AWSServiceRoleForAmazonEKSNodegroup due to missing permissions for 'iam:CreateServiceLinkedRole"。请帮助。

我正在按照 AWS 文档中的说明进行操作 (https://docs.aws.amazon.com/eks/latest/userguide/getting-started-console.html)

您可以参考eksctl文档页面:https://eksctl.io/usage/minimum-iam-policies/

该页面显示了需要分配给 AWS 用户以便在 AWS 中管理 kubernetes 集群的所有策略,但是在继续之前阅读我的完整答案

重要

创建 EksAllAccessIamLimitedAccess 记得用您的 AWS 账户 ID 替换 <account_id>

AWS 中已存在名为 AmazonEC2FullAccessAWSCloudFormationFullAccess 的策略。 请勿使用 built-in 政策。创建您自己的(您可以使用相同的名称)。

AmazonEC2FullAccess 政策与 built-in 版本略有不同。此外,above-mentioned 页面上的版本还缺少一个条目:"eks-nodegroup.amazonaws.com",.

AmazonEC2FullAccess 政策定义的最后一部分应该是这样的:

{
    "Effect": "Allow",
    "Action": "iam:CreateServiceLinkedRole",
    "Resource": "*",
    "Condition": {
        "StringEquals": {
            "iam:AWSServiceName": [
                "autoscaling.amazonaws.com",
                "ec2scheduled.amazonaws.com",
                "elasticloadbalancing.amazonaws.com",
                "eks.amazonaws.com",
                "eks-fargate-pods.amazonaws.com",
                "eks-nodegroup.amazonaws.com",
                "spot.amazonaws.com",
                "spotfleet.amazonaws.com",
                "transitgateway.amazonaws.com"
            ]
        }
    }
}

您可以参考AWS文档了解更多详情:https://docs.aws.amazon.com/eks/latest/userguide/using-service-linked-roles-eks-nodegroups.html