在 GKE 中的第一个集群之后无法访问 K8S 仪表板 - 使用控制台的 GCP

K8S dashboard not accessible after first cluster in GKE - GCP using console

新手设置:

  1. 在 GCP 中创建了第一个项目
  2. 创建了默认的集群,3 个节点。节点版本 1.7.6。集群主版本 1.7.6-gke.1.
  3. 根据示例在 pod 中部署了一个应用程序。
  4. 能够使用外部 IP 和端口访问 "hello world" 和主机名。
  5. 在我的云控制台的 GCP / GKE 网页中,单击 "discovery and loadbalancing",我能够看到绿色勾号的 "kubernetes-dashboard" 进程,但无法通过列出的 IP 访问。尝试了 8001,9090, /ui 但没有任何效果。
  6. 未在我的本地笔记本电脑上使用任何云 shell 或 gcloud 命令。一切都在控制台上完成。

问题:

  1. 任何人如何访问在控制台中创建的集群的 kubernetes-dashboard?
  2. 文档不清楚,仪表板组件是否包含在控制台本身中?文档是否与 GCP-GKE 屏幕不同步?
  3. 教程说运行"kubectl proxy"然后打开
    http://localhost:8001/ui”,但它不起作用,为什么?
  1. 仪表板服务的地址只能从集群内部访问。如果您通过 ssh 连接到集群中的一个节点,您应该能够连接到仪表板。您可以通过注意该地址在集群的服务 CIDR 范围内来验证这一点。

  2. 运行ning 中的仪表板作为集群内部的一个 pod,具有相关服务。如果您打开 Workloads 视图,您将看到 kubernetes-dashboard 部署,并且可以看到由该部署创建的 pod。我不确定你指的是哪个文档,因为你没有提供 link.

  3. 当您 运行 kubectl proxy 时,它会创建从本地计算机到集群的安全连接。它的工作原理是连接到您的主机,然后通过主机上的代理 运行 连接到您通过 ssh 隧道连接到的 pod/service/host。可能它不工作是因为 ssh 隧道没有 运行ning;您应该验证您的项目是否有新创建的 ssh 规则,允许从集群端点 IP 地址进行访问。否则,如果您可以详细解释 如何 它失败了,那将有助于调试。

这似乎是 Google Cloud 上从版本 1.7.6 开始的内部 Kubernetes DNS 服务的问题。

解决方案是改为访问此端点的仪表板:

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

首先: gcloud container clusters get-credentials cluster-1 --zone my-zone --project my-project 然后找到您的 kubernetes 仪表板端点: kubectl cluster-info

它会像 https://42.42.42.42/api/v1/namespaces/kube-system/services/kubernetes-dashboard/proxy

如果您使用版本 1.9.x 或更高版本创建集群,那么您可以使用令牌进行访问。

  1. 保密。

kubectl -n kube-system describe secrets `kubectl -n kube-system get secrets | awk '/clusterrole-aggregation-controller/ {print }'` | awk '/token:/ {print }'

  1. 复制秘密。

  2. kubectl 代理。

  3. 使用 127.0.0.1:8001/ui 打开 UI。这将重定向到登录页面。 将有两个登录选项,kubeconfig 和 token。 Select令牌并粘贴之前复制的秘密。

希望这对您有所帮助

  1. 安装kube-dashboard

    kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
    
  2. 运行:

    $ kubectl proxy
    
  3. 访问:

    http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/login