我有一个Kubernetes集群,其中各种资源运行良好。我试图使仪表板正常工作,但是启动仪表板并输入服务帐户令牌时出现以下错误。
persistentvolumeclaims:用户 “ system:serviceaccount:kube-system:kubernetes-dashboard”无法列出 名称空间中API组“”中的资源“ persistentvolumeclaims” “默认”
它不允许列出我的群集中的任何资源(永久卷,pod,入口等)。我的集群有多个名称空间。
这是我的服务帐户yaml文件:
apiVersion: v1
kind: ServiceAccount
metadata:
name: k8s-test # replace with your preferred username
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: dashboard-admin # replace with your preferred username
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: dashboard-admin # replace with your preferred username
namespace: kube-system
感谢您的帮助。
答案 0 :(得分:2)
我建议使用Kubernetes的Web UI (Dashboard)文档。
部署仪表板UI
默认情况下未部署仪表板UI。要部署它,请运行以下命令:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-beta4/aio/deploy/recommended.yaml
从您的yaml
中可以看到,您为命名空间kube-system
指定了它们,但是仪表板正在尝试列出命名空间default
中的资源,至少这就是您的错误消息中所说的。
另外,看来您的yaml
对于ServiceAccount
name
也是不正确的,因为在文件中您有k8s-test
且错误消息说它正在使用kubernetes-dashboard
。
答案 1 :(得分:1)
这应该可以解决问题:
kubectl create clusterrolebinding kubernetes-dashboard --clusterrole=cluster-admin --serviceaccount=kube-system:kubernetes-dashboard
以上命令将创建一个角色绑定,该角色绑定赋予所有资源的所有权限。
kubectl proxy
http://127.0.0.1:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/persistentvolume?namespace=default
您可以通过以下方式签出'cluster-admin'角色:
kubectl edit clusterrole cluster-admin
这里的问题是服务帐户'kubernetes-dashboard'对资源'persistentVolumeClaims'没有'列表'权限。