在 GKE 中的第一个集群之后无法访问 K8S 仪表板 - 使用控制台的 GCP
K8S dashboard not accessible after first cluster in GKE - GCP using console
新手设置:
- 在 GCP 中创建了第一个项目
- 创建了默认的集群,3 个节点。节点版本 1.7.6。集群主版本 1.7.6-gke.1.
- 根据示例在 pod 中部署了一个应用程序。
- 能够使用外部 IP 和端口访问 "hello world" 和主机名。
- 在我的云控制台的 GCP / GKE 网页中,单击 "discovery and loadbalancing",我能够看到绿色勾号的 "kubernetes-dashboard" 进程,但无法通过列出的 IP 访问。尝试了 8001,9090, /ui 但没有任何效果。
- 未在我的本地笔记本电脑上使用任何云 shell 或 gcloud 命令。一切都在控制台上完成。
问题:
- 任何人如何访问在控制台中创建的集群的 kubernetes-dashboard?
- 文档不清楚,仪表板组件是否包含在控制台本身中?文档是否与 GCP-GKE 屏幕不同步?
- 教程说运行"kubectl proxy"然后打开
“http://localhost:8001/ui”,但它不起作用,为什么?
仪表板服务的地址只能从集群内部访问。如果您通过 ssh 连接到集群中的一个节点,您应该能够连接到仪表板。您可以通过注意该地址在集群的服务 CIDR 范围内来验证这一点。
运行ning 中的仪表板作为集群内部的一个 pod,具有相关服务。如果您打开 Workloads 视图,您将看到 kubernetes-dashboard
部署,并且可以看到由该部署创建的 pod。我不确定你指的是哪个文档,因为你没有提供 link.
当您 运行 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 或更高版本创建集群,那么您可以使用令牌进行访问。
- 保密。
kubectl -n kube-system describe secrets `kubectl -n kube-system get secrets | awk '/clusterrole-aggregation-controller/ {print }'` | awk '/token:/ {print }'
复制秘密。
kubectl 代理。
使用 127.0.0.1:8001/ui 打开 UI。这将重定向到登录页面。
将有两个登录选项,kubeconfig 和 token。
Select令牌并粘贴之前复制的秘密。
希望这对您有所帮助
安装kube-dashboard
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
运行:
$ kubectl proxy
访问:
http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/login
新手设置:
- 在 GCP 中创建了第一个项目
- 创建了默认的集群,3 个节点。节点版本 1.7.6。集群主版本 1.7.6-gke.1.
- 根据示例在 pod 中部署了一个应用程序。
- 能够使用外部 IP 和端口访问 "hello world" 和主机名。
- 在我的云控制台的 GCP / GKE 网页中,单击 "discovery and loadbalancing",我能够看到绿色勾号的 "kubernetes-dashboard" 进程,但无法通过列出的 IP 访问。尝试了 8001,9090, /ui 但没有任何效果。
- 未在我的本地笔记本电脑上使用任何云 shell 或 gcloud 命令。一切都在控制台上完成。
问题:
- 任何人如何访问在控制台中创建的集群的 kubernetes-dashboard?
- 文档不清楚,仪表板组件是否包含在控制台本身中?文档是否与 GCP-GKE 屏幕不同步?
- 教程说运行"kubectl proxy"然后打开
“http://localhost:8001/ui”,但它不起作用,为什么?
仪表板服务的地址只能从集群内部访问。如果您通过 ssh 连接到集群中的一个节点,您应该能够连接到仪表板。您可以通过注意该地址在集群的服务 CIDR 范围内来验证这一点。
运行ning 中的仪表板作为集群内部的一个 pod,具有相关服务。如果您打开 Workloads 视图,您将看到
kubernetes-dashboard
部署,并且可以看到由该部署创建的 pod。我不确定你指的是哪个文档,因为你没有提供 link.当您 运行
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 或更高版本创建集群,那么您可以使用令牌进行访问。
- 保密。
kubectl -n kube-system describe secrets `kubectl -n kube-system get secrets | awk '/clusterrole-aggregation-controller/ {print }'` | awk '/token:/ {print }'
复制秘密。
kubectl 代理。
使用 127.0.0.1:8001/ui 打开 UI。这将重定向到登录页面。 将有两个登录选项,kubeconfig 和 token。 Select令牌并粘贴之前复制的秘密。
希望这对您有所帮助
安装kube-dashboard
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v1.10.1/src/deploy/recommended/kubernetes-dashboard.yaml
运行:
$ kubectl proxy
访问:
http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/#!/login