从主机访问虚拟机上托管的minikube服务

问题描述 投票:0回答:1

我正在开发一个运行 Ubuntu 的 VM 虚拟机。 我使用 Minikube 在其上创建了一个 Kubernetes 服务,公开了一个 hello-world 应用程序。

NAME        TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
hello-world    NodePort   10.99.59.211    <none>        8080:32453/TCP   2h

minikube ip
192.168.49.2

现在,可以通过浏览器在虚拟机内访问该应用程序:

http://192.168.49.2:32453

但是如果我尝试从主机浏览器打开 hello world 应用程序,则无法访问。

我已经在 virtualbox 中设置了端口转发,并且如果我在虚拟机中运行 apache 服务器但不适用于我的应用程序,那么它工作得很好。 see port forwarding

链接

http://localhost:9090

无法从主机访问,因此我无法访问在虚拟机上运行的应用程序。

你能帮忙吗? 非常感谢你。

kubernetes virtualbox minikube
1个回答
0
投票

在 VirtualBox 端口转发规则中,您没有为访客 IP 提供 IP 地址,因此它使用默认的 127.0.0.1 环回 IP 地址。因此您将流量从 127.0.0.1:9090 转发到 127.0.0.1:32453。因此它将无法访问,因为您实际上试图访问 192.168.49.2:32453 而不是 127.0.0.1:32453。因此输入 192.168.49.2 作为访客 IP 值。

如果到达 192.168.49.2:32453 时仍然存在问题,那么最有可能的问题是您的主机无法识别 IP 地址 192.168.49.2,因此您不应在 VirtualBox 端口转发规则中使用它。 “ifconfig”命令将确认这一点,因为 192.168.49.2 将不会列出。因此,您应该只在 VirtualBox 端口转发规则中使用此“ifconfig”列表中的 IP 地址。此列表中最适合使用的候选地址是 127.0.0.1 环回 IP 地址。因此,要解决此问题,来自虚拟机内环回地址的流量应转发到 192.168.49.2:32453。您将通过安装 socat 来解决这个问题

sudo apt-get install socat

然后对于端口转发,你可以这样做

sudo socat TCP4-LISTEN:3012,fork TCP4:192.168.49.2:32453

现在您终于可以将 VirtualBox 端口转发规则设置为转发到端口 3012

© www.soinside.com 2019 - 2024. All rights reserved.