使用服务帐户令牌的Kubernetes仪表板错误

时间:2019-11-05 20:29:54

标签: kubernetes kubernetes-dashboard

我有一个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

感谢您的帮助。

2 个答案:

答案 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)


FIX:为群集角色创建角色绑定。

这应该可以解决问题:

kubectl create clusterrolebinding kubernetes-dashboard --clusterrole=cluster-admin --serviceaccount=kube-system:kubernetes-dashboard

以上命令将创建一个角色绑定,该角色绑定赋予所有资源的所有权限。


运行代理:

kubectl proxy

检查DashBoard:请检查kubectl提供的URL和端口

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'没有'列表'权限。