我想设置一个本地 Kubernetes 集群以在 macOS 上进行测试。我选择了Canonical提供的microk8s。Kubernetes 不在 macOS 上原生运行,而是使用 multipass 提供的 Linux VM。
安装很顺利,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
ping 实例ping 192.168.64.2
按预期工作。
更新:我通过在 VM 中安装 nginx 进一步测试了连接性。在 macOS 上出现了使用curl http://192.168.64.2
VM 内的 nginx 起始页。
现在,当我使用 shell 进入 VM 时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 主机访问正在运行的服务的步骤。我错过了什么?非常感谢您的帮助!
那个 192.168.64.2 看起来像一个仅限主机的网络,可能是一个仅限内部主机的网络。你能从 Mac 终端 ping 192.168.64.2 吗?多通道默认为网络的 NAT,并且在多通道 1.6 之前不提供将其更改为桥接的选项。目前仅是来源。我输入 1.5 时看到
multipass --version
。无论如何,您都可以通过使用 ssh 将多通道端口转发到 Mac 主机来解决此问题。
multipass shell
从默认为主要的 multipass shell AKA中,运行ssh -R 8080 -R 31004 [email protected]
.-f
如果您希望 ssh 端口转发命令在后台运行,请添加,-g
如果您希望允许来自与 Mac 相同网络上的其他主机的连接,请添加。如果 ssh 在您的 Mac 上不可用,则在您的 Mac 设置中的共享控制面板下为您的用户名启用远程访问或仅 ssh 登录(ssh 服务器)。