EKS集群aws-auth ConfigMap损坏导致鉴权失败如何恢复集群访问?
解决方案
核心原理
EKS有两个不受aws-auth ConfigMap控制的内置管理员权限通道:
- 集群创建时使用的原始IAM身份(用户/角色),默认被授予
system:masters最高权限 - EKS访问入口(Access Entry)功能中配置的集群权限策略,优先级高于
aws-authConfigMap
操作步骤
步骤1:优先使用原始集群创建者身份恢复
- 登录AWS控制台,进入EKS集群详情页,在「配置」标签下找到「集群创建者ARN」,记录对应IAM身份
- 在AWS CLI中切换为该身份(可通过配置
~/.aws/credentials对应密钥、或使用sts assume-role切换角色) - 执行命令重新生成kubeconfig凭证:
aws eks update-kubeconfig --name <你的集群名称> --region <集群所在区域> - 执行
kubectl get ns验证权限,正常返回结果则进入下一步修复ConfigMap
步骤2:修复aws-auth ConfigMap
执行命令编辑ConfigMap:
kubectl edit configmap aws-auth -n kube-system
将mapUsers字段中为空的username补全,修正后的配置示例如下(注意yaml缩进格式要正确,原有mapRoles配置不要改动):
apiVersion: v1 data: mapRoles: <原有默认配置保留> mapUsers: | - userarn: arn:aws:iam::<你的AWS账号ID>:root username: root groups: - system:bootstrappers - system:nodes
保存退出后ConfigMap会自动生效。
兜底方案:找不到原始集群创建者时使用
如果无法定位原始集群创建者身份,可通过EKS访问入口直接开通管理员权限:
- 用持有
eks:CreateAccessEntry权限的IAM身份(比如AWS根用户)登录AWS控制台,进入EKS集群「访问」标签页 - 点击「添加访问条目」,选择你当前使用的IAM身份,关联
AmazonEKSClusterAdminPolicy策略,作用范围选择「集群」 - 等待2分钟配置生效后,重新执行
aws eks update-kubeconfig生成凭证,即可访问集群修复ConfigMap
验证
切换回你日常使用的IAM身份,重新更新kubeconfig后执行kubectl get nodes,无报错即为修复完成。
内容的提问来源于stack exchange,提问作者user1379654
相关产品推荐
相关产品推荐

