5.4. OpenShift Container Platform クラスターノードの sosreport アーカイブの生成
OpenShift Container Platform 4.7 クラスターノードの sosreport
を生成する方法として、デバッグ Pod を使用することが推奨されます。
前提条件
-
cluster-admin
ロールを持つユーザーとしてクラスターにアクセスできる。 - ホストへの SSH アクセスがあること。
-
OpenShift CLI (
oc
) がインストールされている。 - Red Hat の標準またはプレミアムサブスクリプションがある。
- Red Hat カスタマーポータルのアカウントがある。
- 既存の Red Hat サポートケース ID がある。
手順
クラスターノードの一覧を取得します。
$ oc get nodes
ターゲットノードのデバッグセッションに入ります。この手順は、
<node_name>-debug
というデバッグ Pod をインスタンス化します。$ oc debug node/my-cluster-node
NoExecute
エフェクトで taint が付けられたターゲットノードで、デバッグセッションに入るには、ダミー namespace に toleration を追加して、そのダミー namespace でデバッグ Pod を起動します。$ oc new-project dummy
$ oc patch namespace dummy --type=merge -p '{"metadata": {"annotations": { "scheduler.alpha.kubernetes.io/defaultTolerations": "[{\"operator\": \"Exists\"}]"}}}'
$ oc debug node/my-cluster-node
/host
をデバッグシェル内の root ディレクトリーとして設定します。デバッグ Pod は、Pod 内の/host
にホストの root ファイルシステムをマウントします。root ディレクトリーを/host
に変更すると、ホストの実行パスに含まれるバイナリーを実行できます。# chroot /host
注記Red Hat Enterprise Linux CoreOS (RHCOS) を実行する OpenShift Container Platform 4.7 クラスターノードは変更できず、Operator を使用してクラスターの変更を適用します。SSH を使用したクラスターノードへのアクセスは推奨されず、ノードは accessed のテイントのマークが付けられます。ただし、OpenShift Container Platform API が利用できない場合や、kubelet がターゲットノードで適切に機能しない場合、
oc
操作がその影響を受けます。この場合は、代わりにssh core@<node>.<cluster_name>.<base_domain>
を使用してノードにアクセスできます。sosreport
を実行するために必要なバイナリーおよびプラグインが含まれるtoolbox
コンテナーを起動します。# toolbox
注記既存の
toolbox
Pod がすでに実行されている場合、toolbox
コマンドは以下を出力します:'toolbox-' already exists.Trying to start…
.podman rm toolbox-
で実行中の toolbox コンテナーを削除して、sosreport
プラグインの問題を回避するために、新規の toolbox コンテナーを生成します。sosreport
アーカイブを収集します。sosreport
コマンドを実行して、crio.all
およびcrio.logs
CRI-O コンテナーエンジンsosreport
プラグインを有効にします。# sosreport -k crio.all=on -k crio.logs=on 1
- 1
-K
により、デフォルト以外のsosreport
プラグインパラメーターを定義できます。
- プロンプトが表示されたら Enter を押して続行します。
-
Red Hat サポートケース ID を指定します。
sosreport
は ID をアーカイブのファイル名に 追加します。 sosreport
出力は、アーカイブの場所とチェックサムを提供します。以下の出力参照例は、ケース ID01234567
を参照します。Your sosreport has been generated and saved in: /host/var/tmp/sosreport-my-cluster-node-01234567-2020-05-28-eyjknxt.tar.xz 1 The checksum is: 382ffc167510fd71b4f12a4f40b97a4e
- 1
- toolbox コンテナーはホストの root ディレクトリーを
/host
にマウントするため、sosreport
アーカイブのファイルパスはchroot
環境外にあります。
以下の方法のいずれかを使用して、解析のために
sosreport
アーカイブを Red Hat サポートに提供します。ファイルを OpenShift Container Platform クラスターから直接既存の Red Hat サポートケースにアップロードします。
toolbox コンテナー内から、
redhat-support-tool
を実行してアーカイブを既存の Red Hat サポートケースに直接割り当てます。この例では、サポートケース ID01234567
を使用します。# redhat-support-tool addattachment -c 01234567 /host/var/tmp/my-sosreport.tar.xz 1
- 1
- toolbox コンテナーは、ホストの root ディレクトリーを
/host
にマウントします。redhat-support-tool
コマンドでアップロードするファイルを指定する場合は、toolbox コンテナーの root ディレクトリー (/host/
を含む) から絶対パスを参照します。
既存の Red Hat サポートケースにファイルをアップロードします。
oc debug node/<node_name>
コマンドを実行してsosreport
アーカイブを連結し、出力をファイルにリダイレクトします。このコマンドは、直前のoc debug
セッションを終了していることを前提としています。$ oc debug node/my-cluster-node -- bash -c 'cat /host/var/tmp/sosreport-my-cluster-node-01234567-2020-05-28-eyjknxt.tar.xz' > /tmp/sosreport-my-cluster-node-01234567-2020-05-28-eyjknxt.tar.xz 1
- 1
- デバッグコンテナーは、ホストの root ディレクトリーを
/host
にマウントします。連結のためにターゲットファイルを指定する際に、デバッグコンテナーの root ディレクトリー (/host
を含む) から絶対パスを参照します。
注記Red Hat Enterprise Linux CoreOS (RHCOS) を実行する OpenShift Container Platform 4.7 クラスターノードは変更できず、Operator を使用してクラスターの変更を適用します。
scp
を使用してクラスターノードからsosreport
アーカイブを転送することは推奨されず、ノードには accessed のテイントのマークが付けられます。ただし、OpenShift Container Platform API が利用できない場合や、kubelet がターゲットノードで適切に機能しない場合、oc
操作がその影響を受けます。この状態では、scp core@<node>.<cluster_name>.<base_domain>:<file_path> <local_path>
を実行して、ノードからsosreport
アーカイブをコピーすることができます。- https://access.redhat.com/support/cases/ 内の既存のサポートケースに移動します。
- Attach files を選択し、プロンプトに従ってファイルをアップロードします。