新手设置:
-
在GCP中创建了第一个项目
-
创建了具有默认3个节点的群集 . 节点版本1.7.6 . 集群主版本1.7.6-gke.1 .
-
每个示例在一个pod中部署了一个应用程序 .
-
能够使用external-ip和端口访问"hello world"和主机名 .
-
在我的 Cloud 控制台的GCP / GKE网页中,单击"discovery and loadbalancing",我能够以绿色勾选方式查看"kubernetes-dashboard"进程,但无法通过列出的IP访问 . 试过8001,9090,/ ui没什么用的 .
-
在我的本地笔记本电脑上没有使用任何 Cloud 外壳或gcloud命令 . 一切都在控制台上完成 .
问题:
-
人们如何访问在控制台中创建的集群的kubernetes-dashboard?
-
docs不清楚,控制台本身是否包含仪表板组件?文档是否与GCP-GKE屏幕不同步?
-
教程说运行"kubectl proxy"然后打开
“http://localhost:8001/ui”,但它不起作用,为什么?
4 回答
从Google Cloud 端版本1.7.6开始,内部Kubernetes DNS服务似乎存在问题 .
解决方案是访问此 endpoints 的仪表板:
http://localhost:8001/api/v1/proxy/namespaces/kube-system/services/kubernetes-dashboard
Github问题链接:
https://github.com/kubernetes/dashboard/issues/2368 https://github.com/kubernetes/kubernetes/issues/52729
仪表板服务的地址只能从群集内部访问 . 如果您ssh到群集中的节点,您应该能够连接到仪表板 . 您可以通过注意该地址在群集的服务CIDR范围内来验证这一点 .
仪表板作为集群内部的一个pod运行,并带有关联的服务 . 如果打开Workloads视图,您将看到
kubernetes-dashboard
部署,并可以看到部署创建的pod . 我'm not sure which docs you are referring to, since you didn' t提供了一个链接 .运行
kubectl proxy
时,它会创建从本地计算机到群集的安全连接 . 它的工作原理是连接到主服务器,然后通过主服务器上的代理运行到您通过ssh隧道连接的pod / service / host . 它工作是因为ssh隧道没有运行;您应该验证您的项目是否新创建了ssh规则,允许从群集 endpoints IP地址进行访问 . 否则,如果你能解释它失败的原因,这对调试很有用 .首先:
gcloud container clusters get-credentials cluster-1 --zone my-zone --project my-project
然后找到你的kubernetes仪表板 endpoints :kubectl cluster-info
它会像https://42.42.42.42/api/v1/namespaces/kube-system/services/kubernetes-dashboard/proxy
如果您使用版本1.9.x或更高版本创建群集,则可以使用令牌进行访问 .
kubectl -n kube-system describe secrets
kubectl -n kube-system get secrets | awk '/clusterrole-aggregation-controller/ {print $1}'| awk '/token:/ {print $2}'
复制秘密 .
kubectl代理 .
使用127.0.0.1:8001/ui打开UI . 这将重定向到登录页面 . 登录时会有两个选项,kubeconfig和token . 选择令牌并粘贴先前复制的秘密 .
希望这可以帮助