Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

第29章 リモートコマンドの実行

29.1. 概要

CLI を使用してコンテナーでリモートコマンドを実行できます。これにより、コンテナーでルーチン操作を実行するための一般的な Linux コマンドを実行できます。

重要

セキュリティー保護の理由によりoc exec コマンドは、コマンドが cluster-admin ユーザーによって実行されている場合を除き、特権付きコンテナーにアクセスしようとしても機能しません。詳細は、CLI 操作についてのトピックを参照してください。

29.2. 基本的な使用方法

リモートコンテナーコマンド実行のサポートは CLI に組み込まれています。

$ oc exec <pod> [-c <container>] <command> [<arg_1> ... <arg_n>]

例:

$ oc exec mypod date
Thu Apr  9 02:21:53 UTC 2015

29.3. プロトコル

クライアントは要求を Kubernetes API サーバーに対して実行してコンテナーのリモートコマンドの実行を開始します。

/proxy/minions/<node_name>/exec/<namespace>/<pod>/<container>?command=<command>

上記の URL には以下が含まれます。

  • <node_name> はノードの FQDN です。
  • <namespace> はターゲット Pod の namespace です。
  • <pod> はターゲット Pod の名前です。
  • <container> はターゲットコンテナーの名前です。
  • <command> は実行される必要なコマンドです。

例:

/proxy/minions/node123.openshift.com/exec/myns/mypod/mycontainer?command=date

さらに、クライアントはパラメーターを要求に追加して以下について指示します。

  • クライアントはリモートクライアントのコマンドに入力を送信する (標準入力: stdin)。
  • クライアントのターミナルは TTY である。
  • リモートコンテナーのコマンドは標準出力 (stdout) からクライアントに出力を送信する。
  • リモートコンテナーのコマンドは標準エラー出力 (stderr) からクライアントに出力を送信する。

exec 要求の API サーバーへの送信後、クライアントは多重化ストリームをサポートするものに接続をアップグレードします。現在の実装では SPDY を使用しています。

クライアントは標準入力 (stdin)、標準出力 (stdout)、および標準エラー出力 (stderr) 用にそれぞれのストリームを作成します。ストリームを区別するために、クライアントはストリームの streamType ヘッダーを stdinstdout、または stderr のいずれかに設定します。

リモートコマンド実行要求の処理が終了すると、クライアントはすべてのストリームやアップグレードされた接続および基礎となる接続を閉じます。

注記

詳細については、『Architecture』ガイドを参照してください。