如何將 Kubernetes 連接埠匯出到 macOS 主機?

如何將 Kubernetes 連接埠匯出到 macOS 主機?

我想設定一個本地 Kubernetes 叢集以在 macOS 上進行測試。我選擇了微克8s由 Canonical 提供。 Kubernetes 並非在 macOS 上原生運行,而是使用由多次通過

安裝順利,部署順利kubernetes 訓練營似乎已經奏效了。這是我到目前為止得到的輸出:

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.2nginx 起始頁顯示在 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 看起來像一個僅主機網絡,並且可能是一個僅內部主機網絡。 multipass 預設為網路 NAT,並且在 multipass 1.6 之前不提供將其變更為橋接的選項。目前這只是來源。當我輸入 時,我看到 1.5 multipass --version

無論如何,您可以透過使用 ssh 將多通道連接埠轉送到 Mac 主機來解決此問題。從multipass shell預設為主的多通道 shell AKA 中,運行.如果您希望 ssh 連接埠轉送命令在背景運行,請新增;如果您希望允許來自與您的 Mac 位於同一網路上的其他主機的連接,請新增。如果 ssh 在您的 Mac 上不可用,請在 Mac 設定中的共用控制面板下啟用遠端存取或僅使用您的使用者名稱進行 ssh 登入(ssh 伺服器)。ssh -R 8080 -R 31004 [email protected]-f-g

相關內容