web-dev-qa-db-ja.com

ローカルkubernetes minikubeダッシュボードにリモートでアクセスする方法

Kubernetes初心者(または基本的なネットワーク)の質問:私のLAN(IPアドレス192.168。)で実行されているubuntuボックスにインストールされた単一ノードminikube(0.23リリース) 0.20)virtualboxを使用。

minikube startコマンドも正常に完了します

minikube start
Starting local Kubernetes v1.8.0 cluster...
Starting VM...
Getting VM IP address...
Moving files into cluster...
Setting up certs...
Connecting to cluster...
Setting up kubeconfig...
Starting cluster components...
Kubectl is now configured to use the cluster.

minikubeダッシュボードも正常に表示されます。 (192.168.99.100:30000で実行)

私がしたいのは、同じLAN内の(192.168.0.11で実行されている)Macbookからminikubeダッシュボードにアクセスすることです。

また、インターネットから同じminikubeダッシュボードにアクセスしたいです。

LANアクセスの場合:これで、virtualbox(デフォルトのvmオプション)を使用していることがわかり、ネットワークタイプを変更できます(NATポート転送で)vboxnetコマンドを使用

VBoxManage modifyvm "VM name" --natpf1 "guestssh,tcp,,2222,,22"

リストされているとおり here

私の場合、このようなものになります

VBoxManage modifyvm "VM name" --natpf1 "guesthttp,http,,30000,,8080"

ここで正しい線に沿って考えていますか?

また、同じminikubeダッシュボードアドレスにリモートアクセスするために、サービスのようなno-ip.comをセットアップできます。 Linuxボックスにユーティリティをインストールし、ルーター設定でポート転送を設定して、ホストポートからゲストポートにポート転送するように要求しました。それは正しいですか?ここに何かが足りませんか?

15
robin bajaj

私は次のようなシンプルなもので走ることができました:

kubectl proxy --address='0.0.0.0' --disable-filter=true
23
Jeff Prouty

ssh way

あなたがあなたのubuntuボックスにsshを持っていると仮定します。

最初にkubectl proxy &を実行して、http://localhost:8001のダッシュボードを公開します

次に、sshのポート転送を使用してダッシュボードを公開し、次を実行します。

ssh -R 30000:127.0.0.1:8001 [email protected]

これで、LANのMacbookからダッシュボードにアクセスして、ブラウザーでhttp://192.168.0.20:30000を指定する必要があります。

外部から公開するには、no-ip.comを使用してポート30000を公開します。80などの標準ポートに変更することもできます。

これは最も簡単な解決策ではありませんが、一部の場所ではスーパーユーザー権限がなくても機能することに注意してください。

@Jeffは完璧な答えを提供し、初心者のためのヒントを提供しました。

  1. @Jeffのスクリプトを使用してプロキシを起動します。デフォルトでは、「0.0.0.0:8001」でプロキシが開かれます。

    kubectl proxy --address='0.0.0.0' --disable-filter=true
    
  2. 以下のリンクからダッシュボードにアクセスしてください。

    curl http://your_api_server_ip:8001/api/v1/namespaces/kube-system/services/http:kubernetes-dashboard:/proxy/
    

詳細は 公式ドキュメント を参照してください。

10
hao

上記のアプローチのわずかなバリエーション。

NodePort 30003を使用したhttp Webサービスがあります。次を実行することにより、ポート80で外部から利用できるようにします。

Sudo ssh -v -i ~/.ssh/id_rsa -N -L 0.0.0.0:80:localhost:30003 ${USER}@$(hostname)

1
user553965

Jeff Prouty役に立つ答えを追加しました:

私は次のようなシンプルなもので走ることができました:

kubectl proxy --address='0.0.0.0' --disable-filter=true

しかし、私にとっては最初はうまくいきませんでした。

このコマンドは、kubectl(ローカルIP:192.168.0.20)を実行しているCentOS 7マシンで実行します。

別のコンピューター(明らかにLANにあった)からダッシュボードにアクセスしようとしたとき:

http://192.168.0.20:8001/api/v1/namespaces/kube-system/services/kubernetes-dashboard/proxy/

それから私のブラウザにタイムアウトだけがありました。

私の場合の解決策は、CentOS 7(およびおそらく他のディストリビューション)では、OSファイアウォールのポート8001を開く必要があるということです。

したがって、私の場合、CentOS 7ターミナルで実行する必要があります。

 Sudo firewall-cmd --zone=public --add-port=8001/tcp --permanent
 Sudo firewall-cmd --reload

それとその後。できます! :)

もちろん、誰もがあなたのダッシュボードにアクセスできるので、これは安全な解決策ではないことに注意する必要があります。しかし、ローカルのラボテストでは十分だと思います。

他のLinuxディストリビューションでは、ファイアウォールでポートを開くためのコマンドが異なる場合があります。そのためにGoogleを使用してください。

0
Schakal

貴重な回答をありがとう、永久に表示できないkubectlプロキシコマンドを使用する必要がある場合は、停止するまでリモートで表示できるYAMLファイル内の以下の「サービス」オブジェクトを使用します。新しいyamlファイルを作成しますminikube-dashboard.yamlとコードを手動で記述します。コピーして貼り付けることはお勧めしません。

apiVersion : v1
kind: Service
metadata:
  labels:
    app: kubernetes-dashboard
  name: kubernetes-dashboard-test
  namespace: kube-system
spec:
  ports:
  - port: 80
    protocol: TCP
    targetPort: 9090
    nodePort: 30000
  selector:
    app: kubernetes-dashboard
  type: NodePort

コマンドを実行し、

$ Sudo kubectl apply -f minikube-dashboard.yaml

最後に、URLを開きます: http:// your-public-ip-address:30000 /#!/ persistentvolume?namespace = default

0
lakshmikandan