访问 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 主机上的主要内容,如果未能解决你的问题,请参考以下文章
503服务暂时不可用jenkins x中的nginx / 1.13.9