5.9. OpenShift Container Platform ノードまたはコンテナーからのネットワークトレースの収集
ネットワーク関連の OpenShift Container Platform の潜在的な問題を調査する際に、Red Hat サポートは特定の OpenShift Container Platform クラスターノードまたは特定のコンテナーからネットワークパケットトレースを要求する可能性があります。OpenShift Container Platform でネットワークトレースをキャプチャーする方法として、デバッグ Pod を使用できます。
前提条件
- 
						cluster-adminロールを持つユーザーとしてクラスターにアクセスできる。
- 
						OpenShift CLI (oc) がインストールされている。
- 既存の Red Hat サポートケース ID がある。
- Red Hat の Standard または Premium サブスクリプションがある。
- Red Hat カスタマーポータルのアカウントがある。
- ホストへの SSH アクセスがあること。
手順
- クラスターノードのリストを取得します。 - oc get nodes - $ oc get nodes- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- ターゲットノードのデバッグセッションに入ります。この手順は、 - <node_name>-debugというデバッグ Pod をインスタンス化します。- oc debug node/my-cluster-node - $ oc debug node/my-cluster-node- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- /hostをデバッグシェル内の root ディレクトリーとして設定します。デバッグ Pod は、Pod 内の- /hostにホストの root ファイルシステムをマウントします。root ディレクトリーを- /hostに変更すると、ホストの実行パスに含まれるバイナリーを実行できます。- chroot /host - # chroot /host- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 注記- Red Hat Enterprise Linux CoreOS (RHCOS) を実行する OpenShift Container Platform 4.19 クラスターノードは、イミュータブルです。クラスターの変更を適用するには、Operator を使用します。SSH を使用したクラスターノードへのアクセスは推奨されません。ただし、OpenShift Container Platform API が利用できない場合や、kubelet がターゲットノードで適切に機能しない場合、 - oc操作がその影響を受けます。この場合は、代わりに- ssh core@<node>.<cluster_name>.<base_domain>を使用してノードにアクセスできます。
- chroot環境コンソール内から、ノードのインターフェイス名を取得します。- ip ad - # ip ad- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- sosreportを実行するために必要なバイナリーおよびプラグインが含まれる- toolboxコンテナーを起動します。- toolbox - # toolbox- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 注記- 既存の - toolboxPod がすでに実行されている場合、- 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 - $ tcpdump -nn -s 0 -i ens5 -w /host/var/tmp/my-cluster-node_$(date +%d_%m_%Y-%H_%M_%S-%Z).pcap- 1 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- toolbox コンテナーはホストの root ディレクトリーを/hostにマウントするため、tcpdumpキャプチャーファイルのパスはchroot環境外にあります。
 
- ノード上の特定コンテナーに - tcpdumpキャプチャーが必要な場合は、以下の手順に従います。- ターゲットコンテナー ID を確認します。toolbox コンテナーはホストの root ディレクトリーを - /hostにマウントするため、この手順では、- chroot hostコマンドが- crictlコマンドの前に実行されます。- chroot /host crictl ps - # chroot /host crictl ps- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- コンテナーのプロセス ID を確認します。この例では、コンテナー ID は - a7fe32346b120です。- chroot /host crictl inspect --output yaml a7fe32346b120 | grep 'pid' | awk '{print $2}'- # chroot /host crictl inspect --output yaml a7fe32346b120 | grep 'pid' | awk '{print $2}'- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- コンテナーで - 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 - # 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 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- toolbox コンテナーはホストの root ディレクトリーを/hostにマウントするため、tcpdumpキャプチャーファイルのパスはchroot環境外にあります。
 
 
- 以下の方法のいずれかを使用して、分析用に - tcpdumpキャプチャーファイルを Red Hat サポートに提供します。- 既存の 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 - $ oc debug node/my-cluster-node -- bash -c 'cat /host/var/tmp/my-tcpdump-capture-file.pcap' > /tmp/my-tcpdump-capture-file.pcap- 1 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- デバッグコンテナーは、ホストの root ディレクトリーを/hostにマウントします。連結のためにターゲットファイルを指定する際に、デバッグコンテナーの root ディレクトリー (/hostを含む) から絶対パスを参照します。
 注記- Red Hat Enterprise Linux CoreOS (RHCOS) を実行する OpenShift Container Platform 4.19 クラスターノードは、イミュータブルです。クラスターの変更を適用するには、Operator を使用します。 - scpを使用してクラスターノードから- tcpdumpキャプチャーファイルを転送することは推奨されません。ただし、OpenShift Container Platform API が利用できない場合や、kubelet がターゲットノードで適切に機能しない場合、- oc操作がその影響を受けます。この状態では、- scp core@<node>.<cluster_name>.<base_domain>:<file_path> <local_path>を実行して、ノードから- tcpdumpキャプチャーファイルをコピーすることができます。
- Red Hat カスタマーポータルの Customer Support ページ にある既存のサポートケースに移動します。
- Attach files を選択し、プロンプトに従ってファイルをアップロードします。