无可用aws-auth ConfigMap时如何登录EKS集群?AWS SSO角色丢失求助
解决方案
方法1:通过EKS控制台可视化更新aws-auth ConfigMap
直接利用AWS控制台的集群访问权限管理功能,无需kubectl连接:
- 登录AWS控制台,进入目标EKS集群的详情页面
- 切换到**「访问权限」**标签页
- 点击**「添加访问权限」**,选择新的IAM角色(手动创建或新的SSO角色均可),配置对应的Kubernetes权限组(如
system:masters) - 保存后,控制台会自动同步更新
aws-authConfigMap,此时使用新角色的凭证即可连接集群
方法2:用AWS CLI调用EKS API修改ConfigMap
如果控制台操作受限,可通过CLI直接操作:
- 创建一个新的IAM角色(例如
new-eks-admin-role),确保该角色拥有eks:DescribeCluster和eks:UpdateClusterConfig权限 - 编写包含新角色映射的配置内容(示例如下):
apiVersion: v1 kind: ConfigMap metadata: name: aws-auth namespace: kube-system data: mapRoles: | - rolearn: arn:aws:iam::123456789012:role/new-eks-admin-role username: admin groups: - system:masters
- 执行CLI命令完成更新:
aws eks update-kubeconfig --name your-cluster-name aws eks update-cluster-config --name your-cluster-name --config '{"awsAuthConfig":{"mapRoles":[{"roleArn":"arn:aws:iam::123456789012:role/new-eks-admin-role","username":"admin","groups":["system:masters"]}]}}'
- 验证:使用新角色凭证执行
kubectl get pods -n kube-system,确认集群访问恢复
方法3:借助集群EC2节点临时修改ConfigMap
若前两种方法失效,可通过集群工作节点获取临时访问权限:
- 找到EKS集群关联的EC2工作节点,通过SSM Session Manager登录(需节点具备SSM访问权限)
- 节点默认配置了集群访问权限,直接在节点内执行命令修改ConfigMap:
kubectl edit configmap aws-auth -n kube-system
- 添加新的角色映射后保存,退出节点即可用新角色凭证连接集群
内容的提问来源于stack exchange,提问作者Red Bottle
相关产品推荐
相关产品推荐

