私はAzure Container ServiceでKubernetesクラスタをプレイしていましたが、Unrealゲームサーバーをホストすることを目標にしています。だから私は、私は、単一ノード上で、いくつかのサーバーをホストとクライアントでそれらに接続することができるポイントになった上での実験といくつかの質問の日後Kubernetes - UDPを使用したゲームサーバーのホスティング。トラフィックをPODに接続/ルーティングする方法は?
。
私の最新のセットアップでは、hostNetwork:trueで直接PODを配備しました。 ポッドがNATロードバランサに展開されているエージェントノードからパブリックIPと手動でマップされたポートをLoadBalancerに追加しました。
私は完全にそれが良い解決策であると確信しているわけではありませんが動作しますが。それは自動化することができますが、私はそれが負荷の下でスケーラブルであるか分からない。
ポッドが作成されるまで待つ必要があります。 Unrealは7777ポート上で気になるようにオープンしてから、それが見つかるまで1だけインクリメントするため、どのポートが必要かを想定することができます。
ポッドが作成されたら、ロードバランサにNATポート転送を追加する必要があります(ただし、どのノードポッドがあるかわかるまでは実行できません)。
バランサをロードするために新しいNATルールを追加するには時間がかかります。私がこれまで見てきたことからかなり時間がかかります。
私は、特定のPODでトラフィックをルーティングするために外部のロードバランサを使用しています。それはKubernetesの中からそれを行うほうがよいでしょう。
満たしている必要がありいくつかあります:
クライアントがサーバトラフUDPに接続します。
それは最高最小限にパブリックIPアドレスの量を維持するだろう。
UDPを介して外部クライアントに直接PODを公開するにはどうすればよいでしょうか?ポートフォワーディングはそれほど悪い選択肢ではありません(ただし、私は少なくとも1つのパブリックIPを介して公開できるPODの量には限りがあります)。 私は、クライアントをサーバに直接接続するか、または特定のPODにクライアントトラフィックをルーティングする(すなわち、ルータ - >サービス - >ポッドシナリオは受け入れ可能ですが、より間接的でない方が良い)。 http://www.compoundtheory.com/scaling-dedicated-game-servers-with-kubernetes-part-1-containerising-and-deploying/ をそして、私は、サーバーが(私のための要件を持っている必要があります)トラフUDPを接続しているかはわからないが、それは情報のすてきなソースです:
私はこれを読んだことがあります。または、どのようにしてユニティクライアントが内部POD IPに直接接続するか。
ありがとう。 私はそれを以前見たことがありますが、私はconfigmapに何を置くべきかを知ることができませんでした(または、それがクライアントからサーバにどのように届くのか)。 インターネットを見て、私はnginx + config map + udpを使って実際の例を見つけることができませんでした。 クラウドでconfigmapに何を追加するのか、またポッドに接続するのかについて、いくつかの裸の骨(githubよりも少し複雑です)のサンプルを教えてください。 –
私はUDPのためのNginx入力を使用していない、それはあなたが異なったサービスの多くを提供することができるHTTPサービスの代わりに1つの "UDP Virtualhost"を扱うことができるようだ。 まず、nginx入力のReplicasControllerを作成する必要があります。 次に、コンフィグマップを作成し、UDP k8sサービスに合わせて値の部分を変更します。 Nginxは外部IPまたはLoadBalancerIPで公開されています。 –