使用创建EKS集群的角色无法访问集群资源如何解决
EKS集群访问权限报错问题解决
根因定位
你遇到的权限问题核心是混淆了EKS集群创建过程中的两类IAM角色:
- 执行
aws eks create-cluster命令时的调用者身份:也就是你当前EC2实例附加的my-cluster-role,只有这个身份会被EKS默认自动授予system:masters集群管理员权限 - 命令中
--role-arn参数指定的是EKS集群服务角色:仅用于EKS后台调用AWS服务管理VPC、负载均衡等资源,和你访问Kubernetes资源的权限无关
你收到的报错显示身份被识别为system:node:i-xxxxxxxx,说明你的my-cluster-role被EKS的aws-auth配置映射成了EC2工作节点身份,节点身份默认仅拥有pod、service等有限资源的访问权限,没有集群级别的管理权限。
解决步骤
步骤1:获取集群管理员操作权限
首先切换到最初执行aws eks create-cluster命令的IAM身份(如果是其他用户/角色),重新生成kubeconfig:
aws eks --region us-east-1 update-kubeconfig --name my-cluster
此时该身份拥有集群管理员权限,可以修改权限配置。
步骤2:给EC2实例角色绑定管理员权限
在管理员身份下编辑EKS的aws-auth配置文件:
kubectl edit configmap aws-auth -n kube-system
在mapRoles字段中添加如下配置,替换为你的实际账号ID和角色名:
- groups: - system:masters rolearn: arn:aws:iam::012345678910:role/my-cluster-role username: cluster-admin:{{SessionName}}
保存配置后,回到你的EC2实例重新执行kubectl命令,即可正常访问所有集群资源。
特殊场景处理:无法找到原始集群创建身份
如果已经丢失了最初创建集群的IAM身份,可以通过AWS控制台操作恢复权限:
- 登录AWS控制台,进入对应EKS集群的「访问」标签页
- 点击「添加访问入口」,选择
my-cluster-role,为其授予AmazonEKSClusterAdminPolicy策略,访问范围选择整个集群 - 等待配置生效后回到EC2实例操作即可
之前创建ClusterRoleBinding失败的原因
你的当前身份没有RBAC资源的修改权限,必须先获得集群管理员权限后才能操作ClusterRole、ClusterRoleBinding这类权限配置资源。
内容的提问来源于stack exchange,提问作者Anchal Chaudhary
相关产品推荐
相关产品推荐

