Ubuntu

如何將 Kubernetes 埠導出到 macOS 主機?

  • January 6, 2021

我想設置一個本地 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.2VM 內的 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 伺服器)。

引用自:https://serverfault.com/questions/1048086