kubespray 仪表板警告禁止弹出窗口

kubespray dashboard warning forbidden popups

我正在尝试使用 kubespray 在一台机器上设置一个新的 kubernetes 集群(提交 7e84de2ae116f624b570eadc28022e924bd273bc)。

在 运行 剧本之后(在新的 ubuntu 16.04 上),我打开仪表板并看到那些警告弹出窗口:

- configmaps is forbidden: User "system:serviceaccount:default:default" cannot list configmaps in the namespace "default"
- persistentvolumeclaims is forbidden: User "system:serviceaccount:default:default" cannot list persistentvolumeclaims in the namespace "default"
- secrets is forbidden: User "system:serviceaccount:default:default" cannot list secrets in the namespace "default"
- services is forbidden: User "system:serviceaccount:default:default" cannot list services in the namespace "default"
- ingresses.extensions is forbidden: User "system:serviceaccount:default:default" cannot list ingresses.extensions in the namespace "default"
- daemonsets.apps is forbidden: User "system:serviceaccount:default:default" cannot list daemonsets.apps in the namespace "default"
- pods is forbidden: User "system:serviceaccount:default:default" cannot list pods in the namespace "default"
- events is forbidden: User "system:serviceaccount:default:default" cannot list events in the namespace "default"
- deployments.apps is forbidden: User "system:serviceaccount:default:default" cannot list deployments.apps in the namespace "default"
- replicasets.apps is forbidden: User "system:serviceaccount:default:default" cannot list replicasets.apps in the namespace "default"
- jobs.batch is forbidden: User "system:serviceaccount:default:default" cannot list jobs.batch in the namespace "default"
- cronjobs.batch is forbidden: User "system:serviceaccount:default:default" cannot list cronjobs.batch in the namespace "default"
- replicationcontrollers is forbidden: User "system:serviceaccount:default:default" cannot list replicationcontrollers in the namespace "default"
- statefulsets.apps is forbidden: User "system:serviceaccount:default:default" cannot list statefulsets.apps in the namespace "default"

kubectl 命令似乎正常(代理工作,列出 pods 等 return 没有错误,/api 可以访问),但是,仪表板似乎无法获取任何有用的信息.我应该如何调试它?

kubectl create clusterrolebinding default-admin --clusterrole cluster-admin --serviceaccount=default:default

似乎可以解决问题 - 不过我欢迎您提供解释。 (是不是kubespray的疏忽?需要设置变量吗?和RBAC有关系吗?)

仪表板 pod 是 运行 默认服务帐户,默认情况下该帐户没有权限,您可以在仪表板 pod 中看到默认服务帐户的令牌:

kubectl exec -it <dashboard-pod> bash
ls -al /var/run/secrets/kubernetes.io/serviceaccount

您在回答中 运行 的命令设置仪表板 pod 使用的默认服务帐户所需的权限。