私は janus-gateway をグループビデオ通話のwebrtcメディアサーバーとして使用しています。以前はdocker-composeを使用して単一ノードにデプロイしていましたが、今度は水平方向にスケーリングできるようにしたいと考えています。このため、私はkubernetesを使用しようとしていますが、2つの問題に直面しています。
1:メディアサーバーに公開するポート範囲を指定します。メディアサーバーは動作するためにポート範囲を必要とするため、次のコードでdocker-composeでこれを行うことができました
janus-gateway:
build: ./gateway
image: janus-gateway-image
restart: always
ports:
- 8088:8088
- 8188:8188
- 7088:7088
- "10000-10200:10000-10200/udp"
networks:
- back-tier
しかし、私はkubernetesでこれに代わるものを見つけることができません。 kubernetesを使用してポート範囲を公開するにはどうすればよいですか。
2:nodejsアプリからゲートウェイの特定のインスタンスに接続するにはどうすればよいですか。ゲートウェイの2つのインスタンスが実行されているとしましょう。ユーザーがアプリに接続すると、実行中の2つのインスタンスの1つに接続してredisに保存し、このユーザーからのリクエストがその特定のインスタンスに渡されることを確認します。 。ノードから特定のレプリカに接続するにはどうすればよいですか?レプリカリストも取得していますか?
私はkuebernetesで この問題 を確認しましたが、まだ解決されていません。これの回避策はありますか?
Kubernetesを使用してポート範囲を公開するにはどうすればよいですか。
短い答え:できません。
Yorgos Saslis が こちら で述べたように、もう少し詳しく説明します。
問題は、Dockerの現在の状態を考えると、多数のポートを公開することすらすべきではないということです。大規模なポート範囲に伴うオーバーヘッドのため、とにかくホストネットワークを使用することをお勧めします。 (それは両方の待ち時間を追加するだけでなく、重要なリソースを消費します-例 を参照してください)オーバーヘッド/ )
VoIPはKubernetesで実装すべきものではないと思います。メディアサーバーはかなりステートフルで、Kubernetesはほとんどステートレスですが、新しい接続を動的に開く必要があります。
実際のアーキテクチャに大きく依存します。しかし、私はあなたが単一のポートを公開し、K8にローカルバランシングによるスケーリングとルーティングを実行させたいと仮定しています。ポート接続のステートフル性が必要な場合、K8sは使用するソリューションではありません。