Kubernetes Dashboard静态密码登录后用户无法列出资源问题排查
问题分析与解决方案
你遇到的核心问题是:只通过静态密码文件完成了用户认证,但没有给这个admin用户分配任何RBAC权限。Kubernetes的认证和授权是两个独立的环节——--basic-auth-file只是告诉kube-apiserver这个用户是合法的,但默认不会自动赋予任何资源访问权限,哪怕用户名是admin。
之前用Access-control#admin-privileges方式能正常访问,是因为当时使用的用户(比如kubeconfig里的默认admin用户)已经被绑定了集群级的管理员权限,而新创建的静态密码用户并没有这个绑定。
解决步骤:给静态密码用户绑定RBAC权限
你需要创建一个ClusterRoleBinding,把admin用户绑定到Kubernetes内置的cluster-admin角色(这个角色拥有集群内所有资源的完全操作权限),具体操作如下:
- 创建一个名为
admin-cluster-binding.yaml的文件,内容如下:
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: admin-user-cluster-admin-binding roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - apiGroup: rbac.authorization.k8s.io kind: User name: admin
- 执行命令应用这个配置:
kubectl apply -f admin-cluster-binding.yaml
- 重新登录Kubernetes Dashboard,此时
admin用户应该就能正常查看和操作所有资源,不会再出现forbidden类的错误了。
补充说明
如果你不想给用户集群级的最高权限,也可以根据需求绑定更细分的ClusterRole或者Role(针对特定命名空间)。比如只想让用户访问default命名空间的资源,可以创建一个RoleBinding绑定到edit角色:
apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: admin-default-edit-binding namespace: default roleRef: apiGroup: rbac.authorization.k8s.io kind: Role name: edit subjects: - apiGroup: rbac.authorization.k8s.io kind: User name: admin
内容的提问来源于stack exchange,提问作者gavinlin
相关产品推荐
相关产品推荐

