2017-12-10 10 views
0

私はKubernetesを初めて使用しており、基本的な質問があります。私は、ベアメタルUbuntuの "Localhost"セットアップにLXDを使ってCanberical Distribution of Kubernetesをインストールしました。ベアメタル "Localhost"でKubernetesサービスを公開できません

NGINXクラスタのための簡単なデプロイメント/サービスを実行できます。しかし、私は実際に私のサーバーのhostipを使って外部に公開する方法について混乱しています。例えば

kubectl run my-nginx --image=nginx --replicas=3 --port=80 
kubectl expose deployment my-nginx --type=NodePort 
kubectl describe services my-nginx --> Shows NodePort as 31198 

私は成功したワーカーノードのいずれかにCURLを実行することができます。

curl 10.112.134.139:31198 
curl 10.112.134.41:31198 

しかし、私の次のhostIPです192.168.X.Y. HOSTIPを使用してアクセスできるように、実際にこれを公開するにはどうすればよいですか?

+0

http:// hostIP:NodePortでサービスにアクセスできます。たとえば、http://192.168.X.Y:31198 –

答えて

0

あなたの説明から、ローカル環境では、「コンテナ化されたクラスタ」が構成されているようです。したがって、これらのコンテナ化されたワーカーノードにアクセスするNodePortにアクセスできますが、ホストIP自体にはアクセスできます(そのローカルホストには何も設定されていません)。

したがって、ホストから "コンテナ化されたクラスタ"にトラフィックを転送する方法を確立し、NodePortにアクセスできるようにする必要があります。頭に浮かぶ

一つの方法は、マシンにあなたはこの

10.112.134.0/24のようにルートを設定するには、からアクセスしようとしていることになる - ゲートウェイ192.168.XY

sudo route add -net 10.112.134.0/24 gw 192.168.X.Y 

おそらく、sysctlルールnet.ip4.forwardが有効になっているかどうかを確認する必要があります。

+0

ありがとう!これで問題は解決しました。私はnet.ip4.forwardを有効にし、次のようにIPTABLESを設定しました:sudo iptables -t nat -A PREROUTING -i eno2 -p tcp -m tcp -dport 31236 -j DNAT-to 10.112.134.41:31236。 31236は露出したサービスのための私のNODEポートです。私はLXDBR0を既存のアダプタに "ブリッジ"する前に試していましたが、期待通りに動作しませんでした。ありがとうございました! – ahsanshah

+0

お役立ち情報質問に答えたと思いますか? –

関連する問題