ワーカー・ノードのデバッグ
仮想プライベートクラウド クラシック・インフラストラクチャー
ワーカー・ノードをデバッグするためのオプションを確認し、障害の根本原因を探します。
ワーカー・ノードの通知と保守更新を確認する
IBM Cloud の正常性と状況のダッシュボードで、ワーカー・ノードに関連する可能性がある通知や保守更新がないかを確認します。 これらの通知または更新は、ワーカー・ノードの障害の原因を判別するのに役立ちます。
- クラシック・クラスター アカウント内のクラシック・ワーカー・ノードに影響を与える可能性がある IBM Cloud の緊急時保守通知がないか、正常性ダッシュボード を確認します。 保守通知の性質によっては、ワーカー・ノードのリブートまたは再ロードが必要になる場合があります。
- ワーカー・ノードまたはクラスターに影響する可能性がある既知の問題がないか、 IBM Cloud 状況ダッシュボード を確認します。 以下のいずれかのコンポーネントがエラー状況を示している場合、そのコンポーネントがワーカー・ノードの中断の原因である可能性があります。
- すべてのクラスターについて、 Kubernetes Service および Container Registry コンポーネントを確認します。
- Red Hat OpenShift クラスタの場合は Red Hat OpenShift on IBM Cloud コンポーネントをチェックしてください。
- VPC クラスターの場合は、 仮想プライベート・クラウド、 仮想プライベート・エンドポイント 、および Virtual Server for VPC の各コンポーネントを確認します。
- クラシック・クラスターの場合は、 「クラシック・インフラストラクチャーのプロビジョニング」 コンポーネントと Virtual Servers コンポーネントを確認します。
ワーカー・ノードの問題を解決するためのクイック・ステップ
ワーカー・ノードが予期したとおりに機能しない場合は、以下の手順に従って、クラスターおよびコマンド・ライン・ツールを更新するか、診断テストを実行してください。 問題が解決しない場合は、ワーカー・ノードのデバッグで追加の手順を参照してください。
ワーカー・ノードのデバッグ
ステップ 1: ワーカー・ノードの状態を取得する
クラスターが Critical、Delete failed、または Warning 状態の場合、あるいは Pending 状態が長時間続いている場合は、ワーカー・ノードの状態を確認してください。
ibmcloud oc worker ls --cluster CLUSTER_NAME_OR_ID
ステップ 2: ワーカー・ノードの状態を確認する
CLI 出力内ですべてのワーカー・ノードの State フィールドと Status フィールドを確認します。
詳しくは、ワーカー・ノードの状態を参照してください。
ステップ 3: 各ワーカー・ノードの詳細を取得する
ワーカー・ノードの詳細情報を取得します。 詳細情報にエラー・メッセージが含まれている場合は、ワーカー・ノードに関する一般的なエラー・メッセージのリストを参照して、問題の解決方法を確認してください。
ibmcloud oc worker get --cluster CLUSTER_NAME_OR_ID --worker WORKER_NODE_ID
ステップ 4: ワーカー・ノードのインフラストラクチャー・プロバイダーを確認する
インフラストラクチャー環境を確認して、ワーカー・ノードの問題の原因になっている他の理由があるかどうかを調べます。
- ネットワーキング・チームに問い合わせて、ファイアウォールやサブネットの更新などの最近の保守がワーカー・ノード接続に影響していないかどうかを確認します。
- レビュー IBM Cloud 対象: Red Hat OpenShift on IBM Cloud および基盤となるインフラストラクチャプロバイダー(例: Virtual Servers クラシック版や VPC 関連のコンポーネントについては、あるいは Satellite など。
- 基礎となるインフラストラクチャー (クラシックの Virtual Servers など) に対するアクセス権限がある場合は、ワーカー・ノードに対応するマシンの詳細を確認します。
ステップ 5: ワーカーノードに関するログやその他の詳細を収集する
must-gather コマンドの実行
oc adm must-gather CLIコマンドは、問題をデバッグするためにクラスタから情報を収集します。 このツールは、リソース定義、サービスログなどを収集する。 監査ログは、ファイルサイズを小さくするために、デフォルトの情報セットの一部として収集されないことに注意。
oc adm must-gather を実行すると、クラスタ上の新しいプロジェクトにランダムな名前の新しいポッドが作成される。 データはそのポッドで収集され、 must-gather.local で始まる新しいディレクトリに保存される。
以下のコマンド例を確認してください。
oc adm must-gather
1つまたは複数の特定の特徴に関連するデータを収集するコマンドの例では、特定の画像とともに --image 引数を使用します。
oc adm must-gather \
--image=registry.redhat.io/container-native-virtualization/cnv-must-gather-rhel9:v4.17.5
監査ログを収集するコマンドの例。
oc adm must-gather -- /usr/bin/gather_audit_logs
特定のネームスペースでmust-gatherを実行するコマンドの例。
oc adm must-gather --run-namespace NAMESPACE \
--image=registry.redhat.io/container-native-virtualization/cnv-must-gather-rhel9:v4.17.5
指定した時間からログを収集するコマンドの例。
oc adm must-gather --since=24h
oc adm must-gather --since-time=$(date -d '-24 hours' +%Y-%m-%dT%T.%9N%:z )
ネットワークログを収集するコマンドの例。
oc adm must-gather -- gather_network_logs
より多くの例と引数については、次のコマンドを実行してください
oc adm must-gather -h
must-gatherディレクトリから圧縮ファイルを作成するコマンド例。
tar cvaf must-gather.tar.gz must-gather.local.5421342344627712289/
圧縮ファイルをサポートケースに添付してください。
SOSレポートの収集
sosreport は、 (RHEL) および (RHCOS) システムの設定詳細、システム情報、診断データを収集するツールです。 Red Hat Enterprise Linux Red Hat Enterprise Linux CoreOS これは、ノードに関連する診断情報を収集するための標準化された方法を提供し、問題の診断のためにサポートに提供することができる。
サポートとのやり取りの中で、サポートが特定の OpenShift Container Platform ノードの sosreport アーカイブを収集するよう求めることがあります。 例えば、 oc adm must-gather の出力に含まれないシステムログやその他のノード固有のデータをレビューする必要があるかもしれない。
sosreport の取得方法は、ワーカーノードのオペレーティングシステムによって異なります。 RHCOSノードでは、 toolbox コマンドを使用します。 RHEL 8 および RHEL 9 のノードでは、 toolbox はサポートされていません。代わりに、 Red Hat の sosreport スクリプトを使用してください。
OpenShift Container Platform クラスターノードの sosreport を生成する推奨の方法は、デバッグポッドを使用することです。
Red Hat OpenShift クラスターにアクセスします。
-
ワーカーノードの一覧を表示し、対象のノードとそのオペレーティングシステムを特定してください。
oc get nodes -o widesosreportを収集したいワーカーノードの名前をメモしておいてください。 「 OS-IMAGE 」列は、そのノードが RHCOS を実行しているか、RHEL を実行しているかを示します。 -
ターゲットノードでデバッグセッションを開始します。
oc debug node/node_nameNoExecuteのエフェクトで汚染されたターゲット・ノードでデバッグ・セッションに入るには、一時的なネームスペースにトレレーションを追加し、一時的なネームスペースでデバッグ・ポッドを起動する。oc new-project temp oc patch namespace temp --type=merge -p '{"metadata": {"annotations": { "scheduler.alpha.kubernetes.io/defaultTolerations": "[{\"operator\": \"Exists\"}]"}}}'oc debug node/my-cluster-node -
デバッグ・シェル内のルート・ディレクトリとして
/hostを設定する。 デバッグポッドは、ホストのルートファイルシステムを、ポッド内の/hostにマウントします。 ルートディレクトリを/host`` に変更することで、ホストの実行可能パスに含まれるバイナリを実行できるようになります。chroot /hostOpenShift Container Platform Red Hat Enterprise LinuxCoreOS (RHCOS) を実行するクラスターノードは不変であり、クラスター変更の適用にはオペレーターに依存します。 SSHを使用してクラスタノードにアクセスすることは推奨されません。 ただし、 OpenShift Container Platform API が利用できない場合、またはターゲットノード上で kubelet が正常に動作していない場合、oc operations に影響が生じる可能性があります。 このような状況では、代わりに
ssh core@NODE.CLUSTER_NAME.BASE_DOMAIN。 -
ワーカーノードのオペレーティングシステムに応じた方法を使用して、
sosreportを取得してください。-
RHCOS ノード :
toolboxコマンドを使用します。-
ツールボックスコンテナを起動する。このコンテナには、
sosreportを実行するために必要なバイナリとプラグインが含まれている。toolboxコマンドは、RHCOSノードでのみサポートされています。toolbox既存の toolbox ポッドがすでに実行されている場合、toolbox コマンドは
'toolbox-' already exists. Trying to start….を出力します。実行中の toolbox コンテナをpodman rm toolbox-で削除し、新しい toolbox コンテナを起動します。 -
sos reportコマンドを実行し、プロンプトに従ってトラブルシューティングデータを収集する。sos report -k crio.all=on -k crio.logs=on -k podman.all=on -k podman.logs=onOVN- Kubernetes ノードのネットワーク構成に関する情報をレポートに含めるためのコマンド例。
sos report --all-logssosreportの出力には、アーカイブの保存場所とチェックサムが表示されます。 以下の出力サンプルは、サポート・ケース ID 01234567 を参照しています。 ツールボックスコンテナがホストのルートディレクトリを/host`` にマウントしているため、ファイルパスはchroot環境の外側になります。Your sosreport has been generated and saved in: /host/var/tmp/sosreport-my-cluster-node-01234567-2020-05-28-eyjknxt.tar.xz The checksum is: 382ffc167510fd71b4f12a4f40b97a4e
-
-
RHEL 8 および RHEL 9 ノード :RHEL ノードでは、
toolboxコマンドはサポートされていません。 代わりに、 Red Hat の sosreport 収集スクリプトを使用してください。-
Red Hat のナレッジベース記事に記載されている手順に従って、 Red Hat のsosreportスクリプトをダウンロードし、実行してください。
-
スクリプトの指示に従って、トラブルシューティング用のデータを収集してください。 スクリプトの出力から、生成されたアーカイブファイルの保存場所を確認してください。
-
-
-
sosreportをファイルに出力する。デバッグコンテナは、ホストのルートディレクトリを
/hostにマウントします。 連結の対象ファイルを指定する際は、/hostを含め、デバッグコンテナのルートディレクトリからの絶対パスを指定してください。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.xzOpenShift Container Platform Red Hat Enterprise LinuxCoreOS (RHCOS) を実行するクラスターノードは不変であり、クラスター変更の適用にはオペレーターに依存します。
scpを使用してクラスタ・ノードからsosreportアーカイブを転送することは推奨されません。 ただし、 OpenShift Container Platform API が利用できない場合、またはターゲットノード上で kubelet が正常に動作していない場合、oc運用に影響が生じる可能性があります。 このような状況では、scp core@<node>.<cluster_name>.<base_domain>:<file_path> <local_path>を実行して、sosreportアーカイブをノードからコピーすることができます。 -
サポートケースにファイルをアップロードしてください。