无法通过主机的特定 http 端口访问多通道虚拟机

Adg*_*aza 14 macos multipass kubernetes skaffold microk8s

我正在运行带有 multipass hyperkit 的 Ubuntu VM,并且运行 microk8s。在 VM 内,所有内容均可通过 skaffold/kubectl 端口转发进行检查和使用。例如:

\n
$ multipass list\nName                    State             IPv4             Image\nmicrok8s-vm             Running           192.168.64.2     Ubuntu 20.04 LTS\n                                          10.0.1.1\n                                          172.17.0.1\n                                          10.1.254.64\n
Run Code Online (Sandbox Code Playgroud)\n

Port forwarding service/my-app in namespace default, remote port 80 -> 127.0.0.1:4503

\n

在虚拟机内:curl localhost:4503\xe2\x9c\x85

\n

来自主持人:curl 192.168.64.2:4503

\n

我知道虚拟机可以通过端口 80 访问,因为curl 192.168.64.2返回默认的 ngnix 未找到页面。FWIW 我从未安装过 ngnix 并且该服务似乎没有运行/无法将其关闭。

\n

我已经在这个问题上呆了一天了,我被难住了。我什至尝试了 Vbox 驱动程序并手动配置了桥接适配器。我什至创建了自己的适配器......

\n
$ multipass exec -- microk8s-vm sudo bash -c "cat > /etc/netplan/60-bridge.yaml" <<EOF\nnetwork:\n  ethernets:\n    enp0s8:                  # this is the interface name from above\n      dhcp4: true\n      dhcp4-overrides:       # this is needed so the default gateway\n        route-metric: 200    # remains with the first interface\n  version: 2\nEOF\n$ multipass exec microk8s-vm sudo netplan apply\n
Run Code Online (Sandbox Code Playgroud)\n

如何从主机访问该虚拟机?

\n

Ral*_*ack 0

你无法像这样访问你的 pod ip /port。如果要通过节点 IP 地址访问 Pod 端口,则需要定义服务类型 NodePort,然后使用 ipaddressOfNode:NodePort。

curl http://ipaddressOfNode:NodePort
Run Code Online (Sandbox Code Playgroud)

使用端口转发,您必须使用主机系统的本地主机。

kubectl port-forward svc/myservice 8000:yourServicePort

Run Code Online (Sandbox Code Playgroud)

然后

curl http://localhost:8000
Run Code Online (Sandbox Code Playgroud)