Windows Docker Desktop下Kubernetes Dashboard无法查看Pod或权限被拒
解决Kubernetes Dashboard权限不足无法查看Pod等资源的问题
问题核心
开启跳过登录后,Dashboard使用的system:serviceaccount:kubernetes-dashboard:kubernetes-dashboard默认ServiceAccount权限极低,无法访问集群内的Pod、Deployment等资源,导致权限报错或显示“无资源可展示”。
方案一:给默认Dashboard账号绑定管理员权限(快速解决)
直接为默认的kubernetes-dashboard ServiceAccount绑定cluster-admin集群角色,无需新建账号:
- 创建ClusterRoleBinding配置文件
dashboard-admin-binding.yml:
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: kubernetes-dashboard-admin roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: kubernetes-dashboard namespace: kubernetes-dashboard
- 应用配置:
kubectl apply -f dashboard-admin-binding.yml
- 重启Dashboard Deployment使权限生效:
kubectl rollout restart deployment kubernetes-dashboard -n kubernetes-dashboard
- 刷新浏览器的Dashboard页面,即可正常查看所有命名空间下的Pod、Deployment等资源。
方案二:创建专用管理员账号并通过令牌登录(更安全)
如果不想修改默认账号权限,可创建独立的管理员账号:
- 创建ServiceAccount配置文件
admin-user.yml:
apiVersion: v1 kind: ServiceAccount metadata: name: admin-user namespace: kubernetes-dashboard
- 创建ClusterRoleBinding配置文件
admin-user-binding.yml:
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: admin-user roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: admin-user namespace: kubernetes-dashboard
- 依次应用配置文件:
kubectl apply -f admin-user.yml kubectl apply -f admin-user-binding.yml
- 获取管理员令牌:
- K8s 1.24+版本(推荐):
kubectl -n kubernetes-dashboard create token admin-user- 旧版本K8s:
# 等待10秒左右让Secret生成,再执行以下命令 kubectl -n kubernetes-dashboard get secret $(kubectl -n kubernetes-dashboard get sa/admin-user -o jsonpath="{.secrets[0].name}") -o go-template="{{.data.token | base64decode}}" - 关闭跳过登录(可选,提升安全性):
(若patch失败,可直接编辑Deployment:kubectl patch deployment kubernetes-dashboard -n kubernetes-dashboard --type 'json' -p '[{"op": "remove", "path": "/spec/template/spec/containers/0/args/-"}]'kubectl edit deployment kubernetes-dashboard -n kubernetes-dashboard,删除args中的--enable-skip-login参数) - 重启Dashboard后,登录时输入获取到的令牌即可拥有全集群权限。
常见问题说明
- 之前获取令牌无输出:刚创建的ServiceAccount需要几秒时间生成对应的Secret,稍等再执行命令即可。
- 权限绑定后不生效:必须重启Dashboard Deployment,让Pod加载新的RBAC权限配置。
内容的提问来源于stack exchange,提问作者tm1701
相关产品推荐
相关产品推荐

