5.5. ネットワークトレースメソッド
パケットキャプチャーレコードの形式でネットワークトレースを収集すると、Red Hat がネットワークの問題のトラブルシューティングをサポートできます。
OpenShift Dedicated では、ネットワークトレースの実行方法として 2 種類サポートします。以下の表を確認し、ニーズに合った方法を選択します。
メソッド | 利点および機能 |
---|---|
ホストのネットワークトレースの収集 | 1 つ以上のノードで同時に指定する期間で、パケットキャプチャーを実行します。パケットキャプチャーファイルは、指定した期間に達すると、ノードからクライアントマシンに転送されます。 特定のアクションが原因でネットワーク通信に問題を発生される理由をトラブルシューティングでいます。パケットキャプチャーを実行し、問題を発生させるアクションを実行してログで問題を診断します。 |
OpenShift Dedicated ノードまたはコンテナーからのネットワークトレースの収集 |
1 つのノードまたは 1 つのコンテナーでパケットキャプチャーを実行します。パケットキャプチャーの期間を制御できるように パケットキャプチャーを手動で開始し、ネットワーク通信の問題をトリガーしてから、パケットキャプチャーを手動で停止できます。
この方法では、 |
5.5.1. ホストのネットワークトレースの収集
ネットワーク関連の問題のトラブルシューティングは、ネットワーク通信を追跡して複数のノードで同時にパケットをキャプチャーすることで簡素化されます。
oc adm must-gather
コマンドおよび registry.redhat.io/openshift4/network-tools-rhel8
コンテナーイメージの組み合わせを使用して、ノードからパケットキャプチャーを収集できます。パケットキャプチャーの分析は、ネットワーク通信の問題のトラブルシューティングに役立ちます。
oc adm must-gather
コマンドは、特定のノードの Pod で tcpdump
コマンドの実行に使用されます。tcpdump
コマンドは、Pod でキャプチャーされたパケットを記録します。tcpdump
コマンドを終了すると、oc adm must-gather
コマンドは、Pod からクライアントマシンにキャプチャーされたパケットが含まれるファイルを転送します。
以下の手順で使用するコマンド例は、tcpdump
コマンドを使用してパケットキャプチャーを実行する方法を示しています。ただし、--image
引数で指定したコンテナーイメージでコマンドを実行すると、複数のノードから同時にトラブルシューティング情報を収集できます。
前提条件
OpenShift Dedicated に、
cluster-admin
ロールを持つユーザーとしてログインしている。注記OpenShift Dedicated デプロイメントでは、Customer Cloud Subscription (CCS) モデルを使用していないお客様は、
cluster-admin
権限が必要なため、oc adm must-gather
コマンドを使用できません。-
OpenShift CLI (
oc
) がインストールされている。
手順
以下のコマンドを実行して、一部のノードでホストネットワークからパケットキャプチャーを実行します。
$ oc adm must-gather \ --dest-dir /tmp/captures \ <.> --source-dir '/tmp/tcpdump/' \ <.> --image registry.redhat.io/openshift4/network-tools-rhel8:latest \ <.> --node-selector 'node-role.kubernetes.io/worker' \ <.> --host-network=true \ <.> --timeout 30s \ <.> -- \ tcpdump -i any \ <.> -w /tmp/tcpdump/%Y-%m-%dT%H:%M:%S.pcap -W 1 -G 300
<.>
--dest-dir
引数では、oc adm must-gather
の実行時に、クライアントマシンの/tmp/captures
と相対パスにあるディレクトリーに、キャプチャーしたパケットを保存することを指定します。書き込み可能な任意のディレクトリーを指定できます。<.>oc adm must-gather
が開始するデバッグ Pod でtcpdump
が実行される場合に、--source-dir
引数は、パケットキャプチャーが Pod の/tmp/tcpdump
ディレクトリーに一時的に保存されることを指定します。<.>--image
引数は、tcpdump
コマンドを含むコンテナーイメージを指定します。<.>--node-selector
引数とサンプル値は、ワーカーノードでパケットキャプチャーを実行するように指定します。別の方法としては、代わりに--node-name
引数を指定して、1 つのノードでパケットキャプチャーを実行できます。--node-selector
と--node-name
引数の両方を省略すると、すべてのノードでパケットキャプチャーが実行されます。<.> ノードのネットワークインターフェイスでパケットキャプチャーが実行されるように、--host-network=true
引数が必要です。<.>--timeout
引数と値は、デバッグ Pod を 30 秒間実行するように指定します。--timeout
引数と期間を指定しない場合、デバッグ Pod は 10 分間実行されます。<.>tcpdump
コマンドの-i any
引数は、すべてのネットワークインターフェイスでパケットをキャプチャーするように指定します。また、ネットワークインターフェイス名を指定することもできます。- ネットワークトレースがパケットをキャプチャーしている間に、ネットワーク通信の問題を発生させる、Web アプリケーションにアクセスするなど、特定のアクションを実行します。
oc adm must-gather
で Pod からクライアントマシンに転送したパケットキャプチャーファイルを確認します。tmp/captures ├── event-filter.html ├── ip-10-0-192-217-ec2-internal 1 │ └── registry-redhat-io-openshift4-network-tools-rhel8-sha256-bca... │ └── 2022-01-13T19:31:31.pcap ├── ip-10-0-201-178-ec2-internal 2 │ └── registry-redhat-io-openshift4-network-tools-rhel8-sha256-bca... │ └── 2022-01-13T19:31:30.pcap ├── ip-... └── timestamp
5.5.2. OpenShift Dedicated ノードまたはコンテナーからのネットワークトレースの収集
ネットワーク関連の OpenShift Dedicated の潜在的な問題を調査する際に、Red Hat サポートは特定の OpenShift Dedicated クラスターノードまたは特定のコンテナーからネットワークパケットトレースを要求する可能性があります。OpenShift Dedicated でネットワークトレースをキャプチャーする方法として、デバッグ Pod を使用できます。
前提条件
cluster-admin
ロールを持つユーザーとしてクラスターにアクセスできる。注記OpenShift Dedicated デプロイメントでは、Customer Cloud Subscription (CCS) モデルを使用していないお客様は、
cluster-admin
権限が必要なため、oc debug
コマンドを使用できません。-
OpenShift CLI (
oc
) がインストールされている。 - 既存の Red Hat サポートケース ID がある。
手順
クラスターノードのリストを取得します。
$ oc get nodes
ターゲットノードのデバッグセッションに入ります。この手順は、
<node_name>-debug
というデバッグ Pod をインスタンス化します。$ oc debug node/my-cluster-node
/host
をデバッグシェル内の root ディレクトリーとして設定します。デバッグ Pod は、Pod 内の/host
にホストの root ファイルシステムをマウントします。root ディレクトリーを/host
に変更すると、ホストの実行パスに含まれるバイナリーを実行できます。# chroot /host
chroot
環境コンソール内から、ノードのインターフェイス名を取得します。# ip ad
sosreport
を実行するために必要なバイナリーおよびプラグインが含まれるtoolbox
コンテナーを起動します。# toolbox
注記既存の
toolbox
Pod がすでに実行されている場合、toolbox
コマンドは以下を出力します:'toolbox-' already exists.Trying to start…
.tcpdump
の問題が発生するのを回避するには、podman rm toolbox-
で実行中の toolbox コンテナーを削除し、新規の toolbox コンテナーを生成します。クラスターノードで
tcpdump
セッションを開始し、出力をキャプチャーファイルにリダイレクトします。この例では、ens5
をインターフェイス名として使用します。$ tcpdump -nn -s 0 -i ens5 -w /host/var/tmp/my-cluster-node_$(date +%d_%m_%Y-%H_%M_%S-%Z).pcap 1
- 1
- toolbox コンテナーはホストの root ディレクトリーを
/host
にマウントするため、tcpdump
キャプチャーファイルのパスはchroot
環境外にあります。
ノード上の特定コンテナーに
tcpdump
キャプチャーが必要な場合は、以下の手順に従います。ターゲットコンテナー ID を確認します。toolbox コンテナーはホストの root ディレクトリーを
/host
にマウントするため、この手順では、chroot host
コマンドがcrictl
コマンドの前に実行されます。# chroot /host crictl ps
コンテナーのプロセス ID を確認します。この例では、コンテナー ID は
a7fe32346b120
です。# chroot /host crictl inspect --output yaml a7fe32346b120 | grep 'pid' | awk '{print $2}'
コンテナーで
tcpdump
セッションを開始し、出力をキャプチャーファイルにリダイレクトします。この例では、49628
をコンテナーのプロセス ID として使用し、ens5
をインターフェイス名として使用します。nsenter
コマンドはターゲットプロセスの namespace に入り、その namespace でコマンドを実行します。この例ではターゲットプロセスがコンテナーのプロセス ID であるため、tcpdump
コマンドはホストからコンテナーの namespace で実行されます。# nsenter -n -t 49628 -- tcpdump -nn -i ens5 -w /host/var/tmp/my-cluster-node-my-container_$(date +%d_%m_%Y-%H_%M_%S-%Z).pcap 1
- 1
- toolbox コンテナーはホストの root ディレクトリーを
/host
にマウントするため、tcpdump
キャプチャーファイルのパスはchroot
環境外にあります。
以下の方法のいずれかを使用して、分析用に
tcpdump
キャプチャーファイルを Red Hat サポートに提供します。ファイルを OpenShift Dedicated クラスターから直接既存の Red Hat サポートケースにアップロードします。
toolbox コンテナー内から、
redhat-support-tool
を実行してファイルディレクトリーを既存の Red Hat サポートケースに直接割り当てます。この例では、サポートケース ID01234567
を使用します。# redhat-support-tool addattachment -c 01234567 /host/var/tmp/my-tcpdump-capture-file.pcap 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/my-tcpdump-capture-file.pcap' > /tmp/my-tcpdump-capture-file.pcap 1
- 1
- デバッグコンテナーは、ホストの root ディレクトリーを
/host
にマウントします。連結のためにターゲットファイルを指定する際に、デバッグコンテナーの root ディレクトリー (/host
を含む) から絶対パスを参照します。
- Red Hat カスタマーポータルの Customer Support ページ にある既存のサポートケースに移動します。
- Attach files を選択し、プロンプトに従ってファイルをアップロードします。
5.5.3. Red Hat サポートへの診断データの提供
OpenShift Dedicated の問題を調査する際に、Red Hat サポートは診断データをサポートケースにアップロードするよう依頼する可能性があります。ファイルは、Red Hat カスタマーポータルからサポートケースにアップロードするか、redhat-support-tool
コマンドを使用して OpenShift Dedicated クラスターから直接アップロードできます。
前提条件
cluster-admin
ロールを持つユーザーとしてクラスターにアクセスできる。注記OpenShift Dedicated デプロイメントでは、Customer Cloud Subscription (CCS) モデルを使用していないお客様は、
cluster-admin
権限が必要なため、oc debug
コマンドを使用できません。-
OpenShift CLI (
oc
) がインストールされている。 - 既存の Red Hat サポートケース ID がある。
手順
Red Hat カスタマーポータルから既存の Red Hat サポートケースに診断データをアップロードします。
oc debug node/<node_name>
コマンドを使用して OpenShift Dedicated ノードで組み込まれている診断ファイルを連結し、出力をファイルにリダイレクトします。以下の例では、/host/var/tmp/my-diagnostic-data.tar.gz
をデバッグコンテナーから/var/tmp/my-diagnostic-data.tar.gz
にコピーします。$ oc debug node/my-cluster-node -- bash -c 'cat /host/var/tmp/my-diagnostic-data.tar.gz' > /var/tmp/my-diagnostic-data.tar.gz 1
- 1
- デバッグコンテナーは、ホストの root ディレクトリーを
/host
にマウントします。連結のためにターゲットファイルを指定する際に、デバッグコンテナーの root ディレクトリー (/host
を含む) から絶対パスを参照します。
- Red Hat カスタマーポータルの Customer Support ページ にある既存のサポートケースに移動します。
- Attach files を選択し、プロンプトに従ってファイルをアップロードします。
5.5.4. toolbox
について
toolbox
は、Red Hat Enterprise Linux CoreOS (RHCOS) システムでコンテナーを起動するツールです。このツールは、主に sosreport
や redhat-support-tool
などのコマンドを実行するために必要なバイナリーおよびプラグインを含むコンテナーを起動するために使用されます。
toolbox
コンテナーの主な目的は、診断情報を収集し、これを Red Hat サポートに提供することにあります。ただし、追加の診断ツールが必要な場合は、RPM パッケージを追加するか、標準のサポートツールイメージの代替イメージを実行することができます。
toolbox
コンテナーへのパッケージのインストール
デフォルトでは、toolbox
コマンドを実行すると、registry.redhat.io/rhel9/support-tools:latest
イメージを使用してコンテナーが起動します。このイメージには、最も頻繁に使用されるサポートツールが含まれます。イメージの一部ではないサポートツールを必要とするノード固有のデータを収集する必要がある場合は、追加のパッケージをインストールできます。
前提条件
-
oc debug node/<node_name>
コマンドでノードにアクセスしている。 - root 権限を持つユーザーとしてシステムにアクセスできる。
手順
/host
をデバッグシェル内の root ディレクトリーとして設定します。デバッグ Pod は、Pod 内の/host
にホストの root ファイルシステムをマウントします。root ディレクトリーを/host
に変更すると、ホストの実行パスに含まれるバイナリーを実行できます。# chroot /host
toolbox コンテナーを起動します。
# toolbox
wget
などの追加のパッケージをインストールします。# dnf install -y <package_name>
toolbox
を使用した代替イメージの起動
デフォルトでは、toolbox
コマンドを実行すると、registry.redhat.io/rhel9/support-tools:latest
イメージを使用してコンテナーが起動します。
.toolboxrc
ファイルを作成し、実行するイメージを指定して代替イメージを起動できます。ただし、registry.redhat.io/rhel8/support-tools:latest
など、古いバージョンの support-tools
イメージの実行は、OpenShift Dedicated 4 ではサポートされていません。
前提条件
-
oc debug node/<node_name>
コマンドでノードにアクセスしている。 - root 権限を持つユーザーとしてシステムにアクセスできる。
手順
/host
をデバッグシェル内の root ディレクトリーとして設定します。デバッグ Pod は、Pod 内の/host
にホストの root ファイルシステムをマウントします。root ディレクトリーを/host
に変更すると、ホストの実行パスに含まれるバイナリーを実行できます。# chroot /host
オプション: デフォルトのイメージの代わりに代替イメージを使用する必要がある場合は、root ユーザー ID のホームディレクトリーに
.toolboxrc
ファイルを作成し、イメージのメタデータを指定します。REGISTRY=quay.io 1 IMAGE=fedora/fedora:latest 2 TOOLBOX_NAME=toolbox-fedora-latest 3
次のコマンドを入力して toolbox コンテナーを起動します。
# toolbox
注記既存の
toolbox
Pod がすでに実行されている場合、toolbox
コマンドは以下を出力します:'toolbox-' already exists.Trying to start…
.sosreport
プラグインの問題を回避するには、podman rm toolbox-
を使用して実行中の toolbox コンテナーを削除し、新しい toolbox コンテナーを生成してください。