访问 minikube 仪表板 - (Ubuntu20.04 服务器)VM 运行在带有 VirtualBox 6.1 的 Windows 10 主机上

Posted

技术标签:

【中文标题】访问 minikube 仪表板 - (Ubuntu20.04 服务器)VM 运行在带有 VirtualBox 6.1 的 Windows 10 主机上【英文标题】:Accessing minikube dashboard - (Ubuntu20.04 server)VM running on Windows 10 host with VirtualBox 6.1 【发布时间】:2021-10-20 07:10:20 【问题描述】:

我正在尝试从主机操作系统 (Windows 10) 访问 minikube 仪表板。

Minikube 正在我的虚拟机 Ubuntu 20.04 服务器上运行。

主机是 Windows 10,我使用 VirtualBox 来运行我的虚拟机。

这些是我在 Ubuntu 上运行的命令:

tomas@ubuntu20:~$ minikube start
* minikube v1.22.0 on Ubuntu 20.04 (vbox/amd64)
* Using the docker driver based on existing profile
* Starting control plane node minikube in cluster minikube
* Pulling base image ...
* Updating the running docker "minikube" container ...
* Preparing Kubernetes v1.21.2 on Docker 20.10.7 ...
* Verifying Kubernetes components...
  - Using image gcr.io/k8s-minikube/storage-provisioner:v5
  - Using image kubernetesui/dashboard:v2.1.0
  - Using image kubernetesui/metrics-scraper:v1.0.4
* Enabled addons: storage-provisioner, default-storageclass, dashboard
* kubectl not found. If you need it, try: 'minikube kubectl -- get pods -A'
* Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default

tomas@ubuntu20:~$ kubectl get po -A
    
Command 'kubectl' not found, but can be installed with:
    
sudo snap install kubectl

tomas@ubuntu20:~$ minikube kubectl -- get po -A
NAMESPACE              NAME                                         READY   STATUS    RESTARTS   AGE
kube-system            coredns-558bd4d5db-9p9ck                     1/1     Running   2          72m
kube-system            etcd-minikube                                1/1     Running   2          72m
kube-system            kube-apiserver-minikube                      1/1     Running   2          72m
kube-system            kube-controller-manager-minikube             1/1     Running   2          72m
kube-system            kube-proxy-xw766                             1/1     Running   2          72m
kube-system            kube-scheduler-minikube                      1/1     Running   2          72m
kube-system            storage-provisioner                          1/1     Running   4          72m
kubernetes-dashboard   dashboard-metrics-scraper-7976b667d4-r9k7t   1/1     Running   2          54m
kubernetes-dashboard   kubernetes-dashboard-6fcdf4f6d-c7kwf         1/1     Running   2          54m

然后我打开另一个终端窗口并运行:

tomas@ubuntu20:~$ minikube dashboard
* Verifying dashboard health ...
* Launching proxy ...
* Verifying proxy health ...
* Opening http://127.0.0.1:36337/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ in your default browser...
  http://127.0.0.1:36337/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/

现在在我的 Windows 10 主机上,我进入网络浏览器输入:

http://127.0.0.1:36337/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/

但我得到错误:

This site can’t be reached 127.0.0.1 refused to connect.

如何从我的主机操作系统网络浏览器访问 minikube 仪表板?

【问题讨论】:

【参考方案1】:

复制

我在使用VirtualBox 运行的 Windows 10 和 ubuntu 18.04 LTS 虚拟机上重现了这种行为。

minikube drivers: docker 和 none 我都试过了(最后一个表示所有 kubernetes 组件都将在 localhost 上运行)并且行为是相同的。

会发生什么

Minikube 设计用于在本地主机上使用。当minikube dashboard 命令运行时,minikube 下载图像(metrics scraper 和仪表板 itefl),启动它们,测试它们是否健康,然后创建在localhost 上运行的代理。它不能接受虚拟机外部的连接(在这种情况下,它是 ubuntu VM 的 Windows 主机)。

这可以通过运行netstat 命令来检查(切断一些无用的输出):

$ minikube dashboard
?  Enabling dashboard ...
?  Launching proxy ...
?  Verifying proxy health ...
?  http://127.0.0.1:36317/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/

$ sudo netstat -tlpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name     
tcp        0      0 127.0.0.1:36317         0.0.0.0:*               LISTEN      461195/kubectl

如何解决

minikube dashboard 命令运行后,kubernetes 仪表板将继续在kubernetes-dashboard 命名空间中运行。

应该使用以下命令手动打开它的代理:

kubectl proxy --address='0.0.0.0' &

或者如果您的机器上没有安装kubectl

minikube kubectl proxy -- --address='0.0.0.0' &

它将在端口8001上启动kubernetes api服务器的代理,并将服务于所有地址(可以更改为默认的虚拟机NAT地址10.2.0.15)。

下一步是在 VirtualBox 中添加port-forwarding。 转到您的虚拟机 -> 设置 -> 网络 -> NAT -> 高级 -> 端口转发

添加新规则:

主机IP = 127.0.0.1 主机端口 = 任何空闲端口,例如我用了8000 访客 IP = 可以留空 访客端口 = 8001(代理正在侦听的位置)

现在您可以转到 Windows 主机上的浏览器,粘贴 URL,更正在 host port 中分配的端口,它会起作用:

http://127.0.0.1:8000/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/

有用的链接:

kubectl proxy command Kubernetes dashboard

【讨论】:

@WytrzymałyWiktor 你好,我还没有尝试过,因为我遇到了另一个问题。一旦我尝试,我会通知你。 接下来,我将发布一些发现,以便稍后可以编辑答案。 “如何解决”部分中的第一个命令应该带有额外的连字符:minikube kubectl proxy -- --address='0.0.0.0' & kubectl之前你还需要minikube 其他一切正常。谢谢@moonkotte :] @Tomas.R 对于您对“minikube kubectl”命令的评论,这是一个选项,您可能希望在您的 VM 上安装“kubectl”。谢谢你的通知。我将在我的答案中将此添加为第二个选项。

以上是关于访问 minikube 仪表板 - (Ubuntu20.04 服务器)VM 运行在带有 VirtualBox 6.1 的 Windows 10 主机上的主要内容,如果未能解决你的问题,请参考以下文章

WSL Ubuntu 安装 minikube

503服务暂时不可用jenkins x中的nginx / 1.13.9

在ubuntu上安装minikube

在ubuntu上安装minikube

sh 在Ubuntu上安装Minikube,Kubectl和Virtualbox

sh 在Ubuntu上安装Minikube,Kubectl和Virtualbox