2016-09-08 12 views
0

私のkubernetesノードのそれぞれでkube-proxyを実行しています。私は、仮想サービスホストを作成するためにiptablesルールをインストールしていることがわかります。私はフランネルオーバレイネットワーキングを使用して、私のノードのドッカーネットワークを接続します。これは、内部のドッカーのコンテナからすべてうまく動作します。だから、私はドッキング用のコンテナの中から直接サービスとポッドに接続することができます。ノード - ホストからサービスに接続できません

しかし、特定の要件のために、ドッキング・コンテナの内部と同じ方法で、ノード・ホストからサービスにアクセスする必要があります。問題は、これはサービスポッドが実行されているノードでのみ可能であるということです。私が今できるよ

[[email protected] ~]# iptables-save | grep dashboard 
-A KUBE-SEP-CAT6SKLXJIMXS63T -s 172.16.99.5/32 -m comment --comment "kube-system/kubernetes-dashboard:" -j KUBE-MARK-MASQ 
-A KUBE-SEP-CAT6SKLXJIMXS63T -p tcp -m comment --comment "kube- system/kubernetes-dashboard:" -m tcp -j DNAT --to-destination 172.16.99.5:9090 
-A KUBE-SERVICES -d 10.254.242.220/32 -p tcp -m comment --comment "kube-system/kubernetes-dashboard: cluster IP" -m tcp --dport 80 -j KUBE-SVC-XGLOHA7QRQ3V22RZ 
-A KUBE-SVC-XGLOHA7QRQ3V22RZ -m comment --comment "kube-system/kubernetes-dashboard:" -j KUBE-SEP-CAT6SKLXJIMXS63T 

はそれは(ポッドがKUBE-ノード-2上で実行されている)の明確化などkubernetes-ダッシュボードポッドをホストしていない、ノード上iptables-saveの次の例を参照してください。 curl http://172.16.99.5:9090にありますが、curl http://10.254.242.220(kube-node-2でこのコマンドが成功しました)にはアクセスできません。一方、同じホストからdocker run -it --rm centos /usr/bin/curl http://10.254.242.220が機能します。

私は、iptablesルールとNATingが欠けているという直感を持っています。そのため、すべてのパッケージがKUBE-SERVICESチェーンにジャンプします。多分、誰かが理解していること、何が起こっているのか、解決策を提供するのを助けることができます。

+0

どのようなFlannelバックエンドをお使いですか?宛先ホストがファイアウォールを使用してソースホストのIPから発信されるトラフィックをブロックしている可能性がありますか? –

+0

VXLANバックエンドを使いたいです。 –

答えて

0

kubernetesクラスタの外部からサービスにアクセスする場合は、サービスタイプNodePorthttp://kubernetes.io/docs/user-guide/services/#publishing-services---service-typesを参照)を使用する必要があります。 デフォルトのポート範囲(30000-32767)以外のポートを使用する場合は、http://kubernetes.io/docs/admin/kube-apiserver/を参照して、新しい範囲を追加することもできます(オプションを参照)。

グリーティング、マーク

+0

あなたの答えをありがとう。私はサービスを公表するための公式に文書化された方法を十分に認識しています。しかし残念ながら、これは私が開発したいものではありません。そこでは、開発マシンで1つのサービスを単独で開発したいと考えています。このサービスは、内部で実行されていたクラスタサービスにアクセスできる必要があります。 –

+0

よろしいですか?その後、おそらくルートを追加する必要があります。私はこのトピックの専門家ではありませんが、私たちはローカル開発マシンのAWSホストクラスタのポッドにアクセスするためにそれをしました。 'sudo route -n add -net ' –

+0

これは試しましたか? NATとアドレス書き換えがたくさんあるので、私はただのルートではできませんでした。 –

関連する問題