如何將 Kubernetes 埠導出到 macOS 主機?
我想設置一個本地 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 yourmacusername@yourmachostname.local
.-f
如果您希望 ssh 埠轉發命令在後台執行,請添加,-g
如果您希望允許來自與 Mac 相同網路上的其他主機的連接,請添加。如果 ssh 在您的 Mac 上不可用,則在您的 Mac 設置中的共享控制面板下為您的使用者名啟用遠端訪問或僅 ssh 登錄(ssh 伺服器)。