Kubernetes仪表板服务器上的错误(“未知”)阻止了请求成功

Kubernetes仪表板服务器上的错误(“未知”)阻止了请求成功,kubernetes,kubernetes-ingress,kubernetes-pod,kubernetes-dashboard,Kubernetes,Kubernetes Ingress,Kubernetes Pod,Kubernetes Dashboard,在我的k8s集群启动并运行之后,我忠实地部署了以下WebUI仪表板 使用命令: kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.4/aio/deploy/recommended.yaml 当我尝试访问它时,会出现以下错误: Metric client health check failed: an error on the server ("unknown") has

在我的k8s集群启动并运行之后,我忠实地部署了以下WebUI仪表板 使用命令:

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.4/aio/deploy/recommended.yaml
当我尝试访问它时,会出现以下错误:

Metric client health check failed: an error on the server ("unknown") has prevented the request from succeeding (get services dashboard-metrics-scraper)
如果我得到了我得到的所有服务:

k get services --all-namespaces
NAMESPACE              NAME                        TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)         AGE
default                kubernetes                  ClusterIP   10.96.0.1     <none>        443/TCP         8d
kube-system            kube-dns                    ClusterIP   10.96.0.10    <none>        53/UDP,53/TCP   8d
kubernetes-dashboard   dashboard-metrics-scraper   ClusterIP   10.96.0.65    <none>        8000/TCP        6m10s
kubernetes-dashboard   kubernetes-dashboard        ClusterIP   10.96.0.173   <none>        443/TCP         6m10s

看起来kubernetes dashboard用户可以访问metrics服务我可能错了

看起来kubernetes dashboard的serviceaccount无法访问所有kubernetes资源(特别是,它无法访问metric server服务)

要解决此问题,您应该为仪表板创建一个新的ServiceAccount,并为其授予更多权限

下面是我在另一篇类似文章中发现的一个(请小心,因为它会授予仪表板管理员权限,无论谁使用它,都可以在kubernetes群集上销毁/创建新的或现有的资源)):

如果您没有群集管理服务帐户,请按照此模板创建一个帐户:

apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin
  namespace: kube-system
  labels:
    kubernetes.io/cluster-service: "true"
    addonmanager.kubernetes.io/mode: Reconcile
管理员群集角色:

kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1alpha1
metadata:
  name: admin
rules:
  - apiGroups: ["*"]
    resources: ["*"]
    verbs: ["*"]
    nonResourceURLs: ["*"]

我在问题中添加了更多关于角色的信息,我将尝试这一个。事实证明,我实际上没有群集管理角色。我只是编辑了我的原始答案,添加了一个示例群集管理服务帐户。试着扩展一下,看看它是否适合您我已经有了一个名为“kubernetes dashboard”的服务帐户,我没有具有管理权限的ClusterRole,我还创建了一个由群集CA签名的证书,主题为“/CN=kubernetes dashboard”并将.p12文件加载到浏览器中。我刚刚将管理员ClusterRole yaml添加到我的答案中。
apiVersion: v1
kind: ServiceAccount
metadata:
  name: admin
  namespace: kube-system
  labels:
    kubernetes.io/cluster-service: "true"
    addonmanager.kubernetes.io/mode: Reconcile
kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1alpha1
metadata:
  name: admin
rules:
  - apiGroups: ["*"]
    resources: ["*"]
    verbs: ["*"]
    nonResourceURLs: ["*"]