通过IAM角色从EC2实例用kubectl访问EKS遇权限问题求助
问题分析与解决步骤
你在ConfigMap里配置的rolearn写错了,用了已假定角色的ARN(带EC2实例ID的那个),而Kubernetes AWS认证插件需要的是IAM角色本身的ARN,不是临时的假定角色ARN。这才导致了"无法对自身执行sts:AssumeRole"的权限错误。
具体修正操作:
- 编辑你的kubectl ConfigMap(通常EKS环境下是
aws-auth这个ConfigMap),把错误的rolearn替换为IAM角色的原生ARN:- rolearn: arn:aws:iam::<account-id>:role/EC2WorkstationRole username: system:node:{{EC2PrivateDNSName}} groups: - system:masters - 保存并应用ConfigMap更改:
kubectl apply -f <你的ConfigMap文件路径>.yaml # 或者如果是直接编辑的话,保存退出后自动生效 - 等待几秒让Kubernetes刷新认证配置,再执行
kubectl get pods验证权限。
补充说明:
EC2实例已经绑定了IAM角色,实例上的临时凭证会自动被Kubernetes的AWS认证插件识别,不需要让已假定的角色再去"假定自己"。你之前的配置相当于让当前角色去调用sts:AssumeRole请求自己的临时身份,这本身就不符合IAM权限逻辑,而且也完全没必要。
内容的提问来源于stack exchange,提问作者Ronnie
相关产品推荐
相关产品推荐

