5.10. 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 nodesCopy to Clipboard Copied! Toggle word wrap Toggle overflow ターゲットノードのデバッグセッションに入ります。この手順は、
<node_name>-debugというデバッグ Pod をインスタンス化します。oc debug node/my-cluster-node
$ oc debug node/my-cluster-nodeCopy to Clipboard Copied! Toggle word wrap Toggle overflow /hostをデバッグシェル内の root ディレクトリーとして設定します。デバッグ Pod は、Pod 内の/hostにホストの root ファイルシステムをマウントします。root ディレクトリーを/hostに変更すると、ホストの実行パスに含まれるバイナリーを実行できます。chroot /host
# chroot /hostCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記Red Hat Enterprise Linux CoreOS (RHCOS) を実行する OpenShift Container Platform 4.16 クラスターノードは、イミュータブルです。クラスターの変更を適用するには、Operator を使用します。SSH を使用したクラスターノードへのアクセスは推奨されません。ただし、OpenShift Container Platform API が利用できない場合や、kubelet がターゲットノードで適切に機能しない場合、
oc操作がその影響を受けます。この場合は、代わりにssh core@<node>.<cluster_name>.<base_domain>を使用してノードにアクセスできます。chroot環境コンソール内から、ノードのインターフェイス名を取得します。ip ad
# ip adCopy to Clipboard Copied! Toggle word wrap Toggle overflow sosreportを実行するために必要なバイナリーおよびプラグインが含まれるtoolboxコンテナーを起動します。toolbox
# toolboxCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記既存の
toolboxPod がすでに実行されている場合、toolboxコマンドは以下を出力します。'toolbox-' already exists. Trying to start…。tcpdumpの問題を回避するために、podman rm 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).pcap1 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 psCopy 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).pcap1 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.pcap1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- デバッグコンテナーは、ホストの root ディレクトリーを
/hostにマウントします。連結のためにターゲットファイルを指定する際に、デバッグコンテナーの root ディレクトリー (/hostを含む) から絶対パスを参照します。
注記Red Hat Enterprise Linux CoreOS (RHCOS) を実行する OpenShift Container Platform 4.16 クラスターノードは、イミュータブルです。クラスターの変更を適用するには、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 を選択し、プロンプトに従ってファイルをアップロードします。