如何将 Kubernetes 端口导出到 macOS 主机?

如何将 Kubernetes 端口导出到 macOS 主机?

我想在 macOS 上设置本地 Kubernetes 集群进行测试。我选择了microk8s由 Canonical 提供。Kubernetes 无法在 macOS 上原生运行,而是使用由多程

安装过程非常顺利,部署kubernetes-bootcamp似乎已经奏效了。这是我目前得到的输出:

microk8s kubectl get services

NAME                  TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
kubernetes            ClusterIP   10.152.183.1     <none>        443/TCP          5h9m
kubernetes-bootcamp   NodePort    10.152.183.226   <none>        8080:31004/TCP   4h10m

multipass list

Name                    State             IPv4             Image
microk8s-vm             Running           192.168.64.2     Ubuntu 18.04 LTS

对实例执行 pingping 192.168.64.2操作符合预期。

更新:我通过在虚拟机内安装 nginx 进一步测试了连接性。使用curl http://192.168.64.2虚拟机内的 nginx 启动页显示在 macOS 上。

现在,当我使用 shell 进入虚拟机时multipass exec microk8s-vm -- bash,我可以curl按预期使用以下方式进入我部署的服务:

  • curl http://127.0.0.1:31004
  • curl http://10.152.183.226:8080

获得预期结果:

Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-57978f5f5d-d977w | v=1

但是我缺少从 macOS(curl 和浏览器)访问这些 URL 的步骤。我尝试过,但没有成功:

  • curl http://10.152.183.226:8080
  • curl http://10.152.183.226:31004
  • curl http://192.168.64.2:8080
  • curl http://192.168.64.2:31004

我显然遗漏了使正在运行的服务可从 macOS 主机访问的步骤。我遗漏了什么?非常感谢您的帮助!

答案1

192.168.64.2 看起来像是仅主机网络,也可能是内部仅主机网络。您能从 Mac 终端 ping 192.168.64.2 吗?multipass 默认为网络 NAT,在 multipass 1.6 之前不提供将其更改为桥接的选项。目前仅是源。当我输入时,我看到的是 1.5 multipass --version

无论如何,您都可以通过使用 ssh 将多通道端口转发到 Mac 主机来解决这个问题。从multipass shell默认为主的多通道 shell AKA 运行。如果您希望 ssh port forward 命令在后台运行,请添加;如果您希望允许来自与 Mac 位于同一网络上的其他主机的连接,请添加。如果您的 Mac 上没有 ssh,请在 Mac 设置的共享控制面板下为您的用户名启用远程访问或仅启用 ssh 登录(ssh 服务器)。ssh -R 8080 -R 31004 [email protected]-f-g

相关内容