我想在 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