0

私は今、8080GCE:1 IP上のTCPとHTTPロードバランサ

ポート上でポート80とのWebSocketのHTTPリクエストを提供していますGKE、上kubernetesアプリケーションを実行している両方とも、HTTPの一部は、クライアントのIPを知る必要があります私はHTTPロードバランサをイングレスサービスとして使用する必要があります。 Websocketの部分はTCPロードバランサを使用しなければなりません。なぜなら、HTTP LBがそれをサポートしていないことがドキュメントに明記されているからです。

私はそれらを両方とも動作させましたが、異なるIPで動作させました。

GCEにはiptablesのようなものがあると思いますので、ポート80からHTTP LBに、8080からTCP LBにトラフィックを転送できますが、そのようなものは見つかりません。転送を含む何でも1つだけそれらを許可します。

は私がnginxの/ HAproxyはこれだけをやってつのインスタンスを持つことができると思いますが、それはやり過ぎ

任意の助けに感謝のように思えます!

答えて

1

ここには大きな回答はありません。 Ingressオブジェクトは実際には現在のところHTTPのみであり、単一クラスター内で複数のグレードの入力をサポートしているわけではありません(私たちは望みますが)。

GCEのHTTP LBはまだWebソケットを作成していません。

サービスには、クライアントIPを失うという欠点があります(私たちはそれに取り組んでいます)。一度これを解決しても、必要な余分なポートがあるため、GCEのL7バランサを使用することはできません。

いくつかのDaemonsetとして独自のhaproxyやnginxのかさえ、独自のアプリを実行します。

私は考えることができる最善の回避策は、私たちは、ソースIPを保存するまで、ユーザーの数によって使用されてきたが、これはまたはHostPortsですべてのノード(ラベル制御されたノード)。

HostPortsを持つノードを指し示すGCE Network LB(Kubernetes外)を実行します。

外部IPを適切に保存できたら、これを元のサービスに戻すことができます。

+0

私はDaemonsetsを見落としました。私が必要なもののように見える、ありがとう – lobanovadik

関連する問題