7.7. OpenShift Container Platform コンテナーでのリモートコマンドの実行
OpenShift Container Platform コンテナーでリモートコマンドを実行するために、CLI を使用することができます。
7.7.1. コンテナーでのリモートコマンドの実行
リモートコンテナーコマンド実行のサポートは CLI に組み込まれています。
手順
コンテナーでコマンドを実行するには、以下の手順を実行します。
oc exec <pod> [-c <container>] -- <command> [<arg_1> ... <arg_n>]
$ oc exec <pod> [-c <container>] -- <command> [<arg_1> ... <arg_n>]以下に例を示します。
oc exec mypod date
$ oc exec mypod date出力例
Thu Apr 9 02:21:53 UTC 2015
Thu Apr  9 02:21:53 UTC 2015
						セキュリティー保護の理由 により、oc exec コマンドは、コマンドが cluster-admin ユーザーによって実行されている場合を除き、特権付きコンテナーにアクセスしようとしても機能しません。
					
7.7.2. クライアントからのリモートコマンドを開始するためのプロトコル
クライアントは要求を Kubernetes API サーバーに対して実行してコンテナーのリモートコマンドの実行を開始します。
/proxy/nodes/<node_name>/exec/<namespace>/<pod>/<container>?command=<command>
/proxy/nodes/<node_name>/exec/<namespace>/<pod>/<container>?command=<command>上記の URL には以下が含まれます。
- 
							<node_name>はノードの FQDN です。
- 
							<namespace>はターゲット Pod のプロジェクトです。
- 
							<pod>はターゲット Pod の名前です。
- 
							<container>はターゲットコンテナーの名前です。
- 
							<command>は実行される必要なコマンドです。
以下に例を示します。
/proxy/nodes/node123.openshift.com/exec/myns/mypod/mycontainer?command=date
/proxy/nodes/node123.openshift.com/exec/myns/mypod/mycontainer?command=dateさらに、クライアントはパラメーターを要求に追加して以下を指示します。
- クライアントはリモートクライアントのコマンドに入力を送信する (標準入力: stdin)。
- クライアントのターミナルは TTY である。
- リモートコンテナーのコマンドは標準出力 (stdout) からクライアントに出力を送信する。
- リモートコンテナーのコマンドは標準エラー出力 (stderr) からクライアントに出力を送信する。
					exec 要求の API サーバーへの送信後、クライアントは多重化ストリームをサポートするものに接続をアップグレードします。現在の実装では HTTP/2 を使用しています。
				
					クライアントは標準入力 (stdin)、標準出力 (stdout)、および標準エラー出力 (stderr) 用にそれぞれのストリームを作成します。ストリームを区別するために、クライアントはストリームの streamType ヘッダーを stdin、stdout、または stderr のいずれかに設定します。
				
リモートコマンド実行要求の処理が終了すると、クライアントはすべてのストリームやアップグレードされた接続および基礎となる接続を閉じます。