4.8. CLI 操作のトラブルシューティングおよびデバッグ
4.8.1. debug
コマンドシェルを起動して、実行中のアプリケーションをデバッグします。
$ oc debug -h
イメージおよび設定の問題をデバッグする際、実行中の Pod 設定の正確なコピーを取得し、shell でトラブルシュートを実行することができます。障害が発生している Pod は起動できず、rsh
またはexec
にアクセスできない可能性があるため、debug
コマンドを実行して、対象の設定の正確なコピーを作成します。
デフォルトモードでは、参照される Pod、レプリケーションコントローラー、またはデプロイメント設定の最初のコンテナー内でシェルを起動します。起動される Pod はソース Pod のコピーになりますが、ラベルは取られ、コマンドは /bin/sh
に変更され、readiness および liveness チェックは無効にされます。コマンドのみを実行する必要がある場合には、--
と実行する 1 つのコマンドを追加します。コマンドを渡しても、デフォルトで TTY が作成されたり、STDIN が送信されたりすることはありません。コンテナーまたは Pod を一般的な方法で変更する際に使用できる他のサポートされているフラグを使用することもできます。
コンテナーを実行する際の一般的な問題として、セキュリティーポリシーによってクラスター上で root ユーザーとしての実行が禁止されることがあります。このコマンドは、(--as-user
を使用して) root ユーザー以外で Pod の実行をテストするか、または (--as-root
を使用して) root ユーザーとして root 以外の Pod を実行するために使用できます。
デバッグ Pod はリモートコマンドの完了時またはシェルが中断する際に削除されます。
4.8.1.1. 使用法
$ oc debug RESOURCE/NAME [ENV1=VAL1 ...] [-c CONTAINER] [options] [-- COMMAND]
4.8.1.2. 各種の例
現在実行中のデプロイメントをデバッグするには、以下を実行します。
$ oc debug dc/test
非 root ユーザーとしてデプロイメントの実行をテストするには、以下を実行します。
$ oc debug dc/test --as-user=1000000
second
コンテナーで env
コマンドを実行し、特定の失敗したコンテナーをデバッグするには、以下を実行します。
$ oc debug dc/test -c second -- /bin/env
デバッグするために作成される Pod を表示するには、以下を実行します。
$ oc debug dc/test -o yaml
4.8.2. logs
特定のビルド、デプロイメント、または Pod のログ出力を取得します。このコマンドは、ビルド、ビルド設定、デプロイメント設定、および Pod で機能します。
$ oc logs -f <pod>
4.8.3. exec
すでに実行中のコンテナーでコマンドを実行します。オプションでコンテナー ID を指定できますが、指定しない場合はデフォルトで最初のコンテナーが指定されます。
$ oc exec <pod> [-c <container>] <command>
セキュリティー保護の理由により、oc exec
コマンドは、コマンドが cluster-admin
ユーザーによって実行されている場合を除き、特権付きコンテナーにアクセスしようとしても機能しません。管理者はノードホストに対して SSH を実行し、必要なコンテナーで docker exec
コマンドを使用することができます。
4.8.4. rsh
コンテナーへのリモートシェルセッションを開きます。
$ oc rsh <pod>
4.8.5. rsync
すでに実行中の Pod コンテナーのディレクトリーへコンテンツをコピーするか、またはこのディレクトリーからコンテンツをコピーします。コンテナーを指定しない場合は、デフォルトで Pod 内の最初のコンテナーが指定されます。
ローカルディレクトリーから Pod 内のディレクトリーにコンテンツをコピーするには、以下を実行します。
$ oc rsync <local_dir> <pod>:<pod_dir> -c <container>
Pod 内のディレクトリーからローカルディレクトリーにコンテンツをコピーするには、以下を実行します。
$ oc rsync <pod>:<pod_dir> <local_dir> -c <container>
4.8.6. port-forward
1 つ以上のローカルポートを Pod に転送します。
$ oc port-forward <pod> <local_port>:<remote_port>
4.8.7. proxy
Kubernetes API サーバーのプロキシーを実行します。
$ oc proxy --port=<port> --www=<static_directory>
4.8.8. attach
実行中のコンテナーに割り当てます。
$ oc attach [--options]
4.8.9. cp
ファイルおよびディレクトリーのコンテナーへの/からのコピーを実行します。
$ oc cp [--options]