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ボックスにユーティリティをインストールし、ルーター設定でポート転送を設定して、ホストポートからゲストポートにポート転送するように要求しました。それは正しいですか?ここに何かが足りませんか?
私は次のようなシンプルなもので走ることができました:
kubectl proxy --address='0.0.0.0' --disable-filter=true
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は完璧な答えを提供し、初心者のためのヒントを提供しました。
@Jeffのスクリプトを使用してプロキシを起動します。デフォルトでは、「0.0.0.0:8001」でプロキシが開かれます。
kubectl proxy --address='0.0.0.0' --disable-filter=true
以下のリンクからダッシュボードにアクセスしてください。
curl http://your_api_server_ip:8001/api/v1/namespaces/kube-system/services/http:kubernetes-dashboard:/proxy/
詳細は 公式ドキュメント を参照してください。
上記のアプローチのわずかなバリエーション。
NodePort 30003を使用したhttp Webサービスがあります。次を実行することにより、ポート80で外部から利用できるようにします。
Sudo ssh -v -i ~/.ssh/id_rsa -N -L 0.0.0.0:80:localhost:30003 ${USER}@$(hostname)
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を使用してください。
貴重な回答をありがとう、永久に表示できない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