3

TCP プロトコルを使用して、ローカル マシンからインターネット経由で Google Container Engine (GKE) 上の Docker コンテナに接続しようとしています。これまで、外部 IP アドレスを提供する Kubernetes サービスを使用してきたので、ローカル マシンはサービスを使用して GKE 上のコンテナに接続できます。サービスを作成するときは、ポートを 1 つしか指定できず、ポート範囲を指定できません。以下の my-ros-service.yaml を参照してください。この場合、GCE の外部から 11311 ポートでコンテナーにアクセスできます。

ただし、コンテナーで実行される一部のアプリケーションは、動的ポートを公開して他のアプリケーションに接続します。したがって、アプリケーションが使用するポート番号を特定できず、アプリケーションを実行する前に Kubernetes サービスを作成できません。

これまでのところ、アプリケーションの実行中に異なるポートを持つ多くのサービスを作成することで、コンテナーに接続することができました。しかし、これは問題を解決する現実的な方法ではありません。

私の質問は次のとおりです。

Kubernetes サービスを使用して、GCE の外部から Docker コンテナーの動的ポートを公開するアプリケーションに接続するにはどうすればよいですか?

可能であれば、コンテナ上で実行されるアプリケーションを実行する前に、着信接続用の動的ポートを公開するサービスを作成できますか?

アドバイスや情報をいただければ幸いです。

前もって感謝します。

my-ros-service.yaml

kind: Service
apiVersion: v1beta1
id: my-ros-service
port: 11311
selector:
  name: my-ros
containerPort: 11311
createExternalLoadBalancer: true
4

1 に答える 1

6

現在、あなたがしていることよりも良い解決策はないと思います。関連する問題として、サービスごとに複数のポートを持つkubernetes issue 1802が既にあります。その問題に関するあなたの要件について言及しました。実行しているプログラム (公開されている場合) や、動的ポートが特定の連続した範囲から来ているかどうかなど、ユース ケースに関する詳細情報をフォローアップすることをお勧めします。

于 2014-12-22T15:56:44.340 に答える