我正在开发一个运行 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 服务器但不适用于我的应用程序,那么它工作得很好。
链接
http://localhost:9090
无法从主机访问,因此我无法访问在虚拟机上运行的应用程序。
你能帮忙吗? 非常感谢你。
在 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