Kubernetes ポートを macOS ホストにエクスポートするにはどうすればいいですか?

Kubernetes ポートを macOS ホストにエクスポートするにはどうすればいいですか?

macOSでテストするためにローカルKubernetesクラスターをセットアップしたい。マイクロk8sCanonicalが提供。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

インスタンスに ping を実行すると、ping 192.168.64.2期待どおりに動作します。

アップデート: VM 内に nginx をインストールして接続性をさらにテストしました。VMcurl http://192.168.64.2内で nginx スタートページを使用すると、macOS に表示されました。

これで、 を使用して 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 ホストからアクセス可能にするための手順が明らかに抜けています。何を見逃したのでしょうか? ご協力いただければ幸いです。

答え1

192.168.64.2 はホストのみのネットワークのように見えますが、内部ホストのみのネットワークである可能性があります。Mac ターミナルから 192.168.64.2 に ping できますか? multipass はネットワークに対してデフォルトで NAT に設定されており、multipass 1.6 まではブリッジに変更するオプションがありません。現時点ではソースのみです。 と入力すると 1.5 が表示されますmultipass --version

いずれにしても、ssh を使用してマルチパス ポートを Mac ホストに転送することで、この問題を回避できます。デフォルトでmultipass shellプライマリに設定されているマルチパス シェル (別名) から、 を実行します。sshポート転送コマンドをバックグラウンドで実行する場合は を追加し、Mac と同じネットワーク上の他のホストからの接続を許可する場合は を追加します。Mac で ssh が利用できない場合は、Mac の設定の共有コントロール パネルで、ユーザー名のリモート アクセスまたは ssh ログイン (ssh サーバー) を有効にします。ssh -R 8080 -R 31004 [email protected]-f-g

関連情報