使用AWS CLI访问EKS集群时遭遇RBAC权限问题求助
核心问题
成功执行aws eks update-kubeconfig --region us-west-2 --name prodxcloud-tenant-cluster-prod添加上下文后,操作aws-auth ConfigMap或执行eksctl get iamidentitymapping时,返回「未授权」或「服务器要求客户端提供凭证」错误。
排查与解决步骤
确认当前AWS身份
执行aws sts get-caller-identity查看当前使用的IAM用户/角色ARN,确保该身份是集群授权实体。同时用aws configure list检查当前配置的profile是否正确。依托集群初始管理员授权
EKS集群创建时,发起创建的IAM实体自动拥有集群系统管理员权限。若当前身份不是该创建者,需联系拥有管理员权限的用户为你配置RBAC权限。手动更新aws-auth ConfigMap(管理员操作)
拥有管理员权限的用户执行kubectl edit configmap aws-auth -n kube-system,在对应字段添加你的IAM身份:
针对IAM用户的示例配置:mapUsers: - userarn: arn:aws:iam::123456789012:user/你的IAM用户名 username: 你的IAM用户名 groups: - system:masters针对IAM角色的示例配置:
mapRoles: - rolearn: arn:aws:iam::123456789012:role/你的IAM角色名 username: 你的IAM角色名 groups: - system:masters保存退出后等待1-2分钟让权限同步,再测试命令。
用eksctl添加身份映射(管理员操作)
执行以下命令自动更新aws-authConfigMap:eksctl create iamidentitymapping --cluster prodxcloud-tenant-cluster-prod --region us-west-2 --arn arn:aws:iam::123456789012:user/你的IAM用户名 --group system:masters --username 你的IAM用户名验证kubeconfig配置
执行cat ~/.kube/config检查context对应的user配置,确认exec命令调用aws eks get-token、region和集群名称均匹配。也可重新生成配置覆盖旧文件:aws eks update-kubeconfig --region us-west-2 --name prodxcloud-tenant-cluster-prod --overwrite-existing检查AWS层面IAM权限
确保当前IAM实体拥有eks:DescribeCluster权限,这是aws eks update-kubeconfig和eksctl工具获取集群信息的必要权限。若使用IAM角色,需确认角色信任关系允许当前用户切换。
内容的提问来源于stack exchange,提问作者user6437920

