【发布时间】:2019-08-10 02:43:27
【问题描述】:
场景很容易重现:
- 使用角色 TempAdmin 创建 eks 集群(我们关注 this documentation)
- 使用 TempAdmin 配置我的凭据,我可以:
kubectl top nodes
- documentation 表示创建集群的用户/角色被自动授予 system:masters 权限。创建一个新角色(管理员)并向该角色授予 system:masters 权限:
$ kubectl get configmap -n kube-system aws-auth -o yaml
apiVersion: v1
data:
mapRoles: |
- rolearn: arn:aws:iam::xxxxxxxxxxxx:role/EKS-Workers2-NodeInstanceRole-HWD4HSSO7NP1
username: system:node:{{EC2PrivateDNSName}}
groups:
- system:bootstrappers
- system:nodes
- rolearn: arn:aws:iam::xxxxxxxxxxxx:role/Admin
groups:
- system:masters
kind: ConfigMap
...
- 现在,将我的凭据配置为使用管理员角色,我可以几乎做任何事情:我可以创建命名空间、编辑 aws-auth configmap、获取节点。但是,当我尝试顶级节点时:
$ kubectl top nodes
Error from server (Forbidden): nodes.metrics.k8s.io is forbidden: User "system:anonymous" cannot list nodes.metrics.k8s.io at the cluster scope: no RBAC policy matched
附加信息:
$ kubectl version
Client Version: version.Info{Major:"1", Minor:"13", GitVersion:"v1.13.2", GitCommit:"cff46ab41ff0bb44d8584413b598ad8360ec1def", GitTreeState:"clean", BuildDate:"2019-01-10T23:35:51Z", GoVersion:"go1.11.4", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"12+", GitVersion:"v1.12.10-eks-2e569f", GitCommit:"2e569fd887357952e506846ed47fc30cc385409a", GitTreeState:"clean", BuildDate:"2019-07-25T23:13:33Z", GoVersion:"go1.10.8", Compiler:"gc", Platform:"linux/amd64"}
【问题讨论】:
-
您是否部署了指标服务器?
-
是的。使用原始角色 (TempAdmin) 我可以做到
kubectl top nodes。在system:masters组中担任新角色时,我收到了该错误 -
您是否尝试添加用户名字段并查看是否可以解决问题? IE。用户名:新管理员。
-
我们在该帐户中没有用户,我们只有角色。虽然我可以尝试创建一个用户来测试它,但我们不会在该帐户中拥有用户。
-
添加 arn:aws:iam::xxxxxxxxxxxx:role/Admin 作为用户名值有效。您要发布答案以便我接受吗?文档说“用户名:Kubernetes 中映射到 IAM 角色的用户名。默认情况下,用户名是 IAM 角色的 ARN。”猜猜这并不总是正确的:P
标签: amazon-eks