2016-08-09 1 views
1

私はGKEにKubernetesクラスター(1.3.2)を持っています。クラスターと同じネットワークを共有するGoogleのプロジェクトからVMとサービスを接続したいと思います。K8Sサービスまたはその基礎となるエンドポイントのクラウド内部IPへの確定的な接続?

サブネット内で、クラスタ自体の内部ではなく、外部IPに接続せずにサービスに接続するVMのための方法はありますか?

ENVやDNSなどのIPとポートを明白に判断するためにできることはたくさんありますが、クラスタIPはクラスタ外には到達できません(明らかに)。

紛失しているものがありますか?プロジェクトのどのVMがサービスに接続したいのか分からないように、これはプロジェクトの「公開」サービスであることを意味します(の場合ははloadBalancerSourceRangesを除外します)。サービスが実際にラップするエンドポイントは、私がヒットできる内部IPだが、そのIPに到達する唯一の良い方法は、Kube APIまたはkubectlだが、どちらも私のサービスに打ち勝つ理想的な方法ではない。

答えて

2

私のより徹底的な回答hereをチェックしてください。しかしこれに対する最も一般的な解決策は、GCPプロジェクトに要塞ルートを作成することです。

最も簡単な形式では、GCEルートを1つ作成して、クラスタのサービスIP範囲内のすべてのトラフィックがGKEノードの1つに着くようにすることができます。そのSPOFがあなたを怖がらせるなら、あなたは異なったノードを指し示すいくつかのルートを作成することができ、それらの間でトラフィックはラウンドロビンされます。

この管理上のオーバーヘッドがあなたが進めたいことではない場合は、GKEクラスタにNodes APIエンドポイントを監視するための簡単なコントローラを作成し、少なくともN任意の時点でのノード。

GCP internal load balancingはアルファとしてリリースされましたので、今後はGCP上のkube-proxyを実装することで内部サービスを処理する要塞ルートが不要になります。

+0

ありがとう、CJ。これをグーグルで調べるのはかなり難しかった:) – user1040625

+0

実際には、フォローアップの質問には、常にレプリカが1以上に設定されていると仮定して、ノード0(最初のノードがk8によってスピンアップ) ?そうでない場合、私はコントローラの必要性を知ることができます。 – user1040625

+0

私は、あなたのクラスタを縮小するときにどのノードが消えるかについて何ら保証はないと思います。ノードは何らかの理由で応答しなくなる可能性があるため、2番目と3番目のオプションは確実に優れています(しかし、より多くの作業が必要です)。 –

関連する問題