第32章 ポート転送
32.1. 概要
OpenShift Container Platform は Kubernetes に組み込まれた機能を利用してPod へのポート転送をサポートします。詳細は、『アーキテクチャー』を参照してください。
CLI を使用して 1 つ以上のローカルポートを Pod に転送できます。これにより、指定されたポートまたはランダムのポートでローカルにリッスンでき、Pod の所定ポートへ/からデータを転送できます。
32.2. 基本的な使用方法
ポート転送のサポートは「CLI」に組み込まれています。
$ oc port-forward <pod> [<local_port>:]<remote_port> [...[<local_port_n>:]<remote_port_n>]
CLI はユーザーによって指定されたそれぞれのローカルポートでリッスンし、以下で説明されているプロトコルで転送を実行します。
ポートは以下の形式を使用して指定できます。
|
クライアントはポート 5000 でローカルでリッスンし、Pod の 5000 に転送します。 |
|
クライアントはポート 6000 でローカルにリッスンし、Pod の 5000 に転送します。 |
|
クライアントは空きのローカルポートを選択し、Pod の 5000 に転送します。 |
たとえば、ポート 5000
および 6000
でローカルにリッスンし、Pod のポート 5000
および 6000
へ/からデータを転送するには、以下を実行します。
$ oc port-forward <pod> 5000 6000
ポート 8888
でローカルにリッスンし、Pod の 5000
に転送するには、以下を実行します。
$ oc port-forward <pod> 8888:5000
空きポートでローカルにリッスンし、Pod の 5000
に転送するには、以下を実行します。
$ oc port-forward <pod> :5000
または、以下を実行します。
$ oc port-forward <pod> 0:5000
32.3. プロトコル
クライアントは Kubernetes API サーバーに対して要求を実行して Pod へのポート転送を実行します。
/proxy/minions/<node_name>/portForward/<namespace>/<pod>
上記の URL には以下が含まれます。
-
<node_name>
はノードの FQDN です。 -
<namespace>
はターゲット Pod の namespace です。 -
<pod>
はターゲット Pod の名前です。
以下に例を示します。
/proxy/minions/node123.openshift.com/portForward/myns/mypod
ポート転送要求を API サーバーに送信した後に、クライアントは多重化ストリームをサポートするものに接続をアップグレードします。現在の実装では SPDY を使用しています。
クライアントは Pod のターゲットポートを含む port
ヘッダーでストリームを作成します。ストリームに書き込まれるすべてのデータは Kubelet 経由でターゲット Pod およびポートに送信されます。同様に、転送された接続で Pod から送信されるすべてのデータはクライアントの同じストリームに送信されます。
クライアントは、ポート転送要求が終了するとすべてのストリーム、アップグレードされた接続および基礎となる接続を閉じます。
詳細については、『アーキテクチャー』ガイドを参照してください。