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