2016-05-02 7 views
1

Google Container Engineクラスタ内のポッドには、同じGCEプロジェクト内の任意のVMから直接アクセスできます。しかし、サービスの内部IPに到達することができない、私はそれが仮想IPであり、外部からアクセス可能ではないためだと思います。同じGCEプロジェクトのvmからKubernetesサービスにアクセス

loadbalancerタイプを使用せずにサービスを一般公開することなく、サービスにアクセスできるようにするにはどうすればよいですか?入力オブジェクトとnginx/haproxy入力コントローラを使用する必要がありますか?またはこれを行う簡単な方法はありますか?

答えて

0

「サービスにアクセスしやすくする」と「サービスを公開する」という意味が完全にはっきりしていません。あなたは、GCEからGSEクラスタの外に、GCPの外からではなく、GCEからあなたのサービスにアクセスしたいと思っていますか?

これが意味するところなら、serviceSpec - http://kubernetes.io/docs/user-guide/services/#external-ipsexternalIPフィールドを見てください。サービスに外部IPアドレスを割り当てて、適切なファイアウォールルールをインストールすることができます。

+0

これはまさに私の言いたいことです。 GCEクラスター外のGCEプロジェクトのすべてからアクセスできますが、GCP外からはアクセスできません。 これまではexternalIPのアプローチを検討しましたが、GKEノードの外部ipsの1つが一時的である必要があるようです。 Googleがクラスタのブートストラップを行うときに、それらのノードに静的なipsを簡単に使用できるかどうかはわかりません。 –

0

多分遅すぎるかもしれませんが、私も同じ問題に直面しており、部分的な解決策があります。

私のサービスは公開されたくないので、私のための入口サービスやノードポートサービスはありません。

GKEでは、Kubernetesサービスの仮想IP範囲は、デフォルトでクラスタ内でのみアクセスできます。

ただし、kubernetesサービスの仮想IP範囲を以下のようなkubernetesノードのいずれかに転送できるGCEルートを作成することで、クラスタ外でアクセスできるようにすることができます。

gcloud compute routes create --destination-range 10.x.x.x/20 --next-hop-instance kube-node-0

これは明らかに、これは場合によっては失敗するようなハックで、すべてのサービスのトラフィックが起こっていたノードは、何らかの理由で(クラスタのアップグレード/ KUBEバージョンなどをアップグレードする)ために失敗しました。

解決策は、kubernetesノードを自動検出し、外部サービストラフィックを負荷分散する外部ノードを持つことです。ただし、まだ動作していません。

このtalkは、kubernetesとGKEネットワーキングの理解に非常に役立つことがわかりました。

関連する問題