7.4. オペレーティングシステムの問題のトラブルシューティング

OpenShift Container Platform は RHCOS で実行されます。以下の手順に従って、オペレーティングシステムに関連する問題のトラブルシューティングを行うことができます。

7.4.1. カーネルクラッシュの調査

kexec-tools パッケージに含まれる kdump サービスは、クラッシュダンプメカニズムを提供します。このサービスを使用して、後で分析するためにシステムのメモリーの内容を保存できます。

x86_64 アーキテクチャーは一般提供 (GA) ステータスの kdump をサポートしますが、他のアーキテクチャーはテクノロジープレビュー (TP) ステータスの kdump をサポートします。

次の表は、さまざまなアーキテクチャーの kdump のサポートレベルに関する詳細を示しています。

表7.1 RHCOS での Kdump サポート

アーキテクチャーサポートレベル

x86_64

 GA

aarch64

 TP

s390x

 TP

ppc64le

 TP

重要

表の中の、最初の 3 つのアーキテクチャーに対する Kdump サポートは、テクノロジープレビュー機能のみになります。テクノロジープレビュー機能は、Red Hat 製品サポートのサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではない場合があります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。

Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。

7.4.1.1. kdump の有効化

RHCOS には kexec-tools パッケージが同梱されていますが、kdump サービスを有効にするには手動で設定する必要があります。

手順

RHCOS で kdump を有効にするには、以下の手順を実行します。

  1. 初回のカーネルの起動時にクラッシュカーネルのメモリーを確保するには、以下のコマンドを入力してカーネル引数を指定します。

    # rpm-ostree kargs --append='crashkernel=256M'
    注記

    ppc64le プラットフォームの場合、crashkernel の推奨値は crashkernel=2G-4G:384M,4G-16G:512M,16G-64G:1G,64G-128G:2G,128G-:4G です。

  2. オプション: デフォルトのローカルの /var/crash の場所ではなく、ネットワーク経由または他の場所にクラッシュダンプを書き込むには、/etc/kdump.conf 設定ファイルを編集します。

    注記

    ノードが LUKS 暗号化デバイスを使用している場合、kdump は LUKS 暗号化デバイスへのクラッシュダンプの保存をサポートしていないため、ネットワークダンプを使用する必要があります。

    kdump サービスの設定についての詳細は、/etc/sysconfig/kdump/etc/kdump.conf、および kdump.conf manual ページのコメントを参照してください。ダンプターゲットの設定に関する詳細については、RHEL kdump documentation も参照してください。

  3. kdump systemd サービスを有効にします。

    # systemctl enable kdump.service
  4. システムを再起動します。

    # systemctl reboot
  5. kdump.service systemd サービスが正常に開始および終了したこと、および cat /sys/kernel/kexec_crash_loaded コマンドが値 1 を出力することを確認して、kdump がクラッシュカーネルをロードしたことを確認します。

7.4.1.2. Day-1 の kdump の有効化

kdump サービスは、カーネルの問題をデバッグするために、ノードごとに有効にすることが意図されています。kdump の有効化にはコストがかかり、これらのコストは kdump が有効化されたノードを追加するたびに増えるため、kdump サービスを必要な場合にのみ各ノードで有効にすことが推奨されます。各ノードで kdump サービスを有効にする場合の潜在的なコストには、以下が含まれます。

  • クラッシュカーネル用にメモリーが予約されているため、利用可能な RAM が少ない。
  • カーネルがコアをダンプしている間にノードが利用できなくなる。
  • 追加のストレージ容量がクラッシュダンプを保存するために使用される。

kdump サービスを有効にすることに伴う不利な点やトレードオフを把握している場合には、クラスター全体で kdump を有効にすることができます。マシン固有のマシン設定はまだサポートされていませんが、Day 1 のカスタマイズとして MachineConfig オブジェクトで systemd ユニットを使用し、クラスター内のすべてのノードで kdump を有効にすることができます。MachineConfig オブジェクトを作成し、そのオブジェクトをクラスターのセットアップ時に Ignition が使用するマニフェストファイルのセットに挿入することができます。

注記

Ignition 設定の使用方法についての詳細は、インストール → インストール設定 セクションのノードのカスタマイズを参照してください。

手順

クラスター全体の設定の MachineConfig オブジェクトを作成します。

  1. kdump を設定および有効にする Butane 設定ファイル 99-99-worker-kdump.bu を作成します。

    variant: openshift
    version: 4.12.0
    metadata:
      name: 99-worker-kdump 1
      labels:
        machineconfiguration.openshift.io/role: worker 2
    openshift:
      kernel_arguments: 3
        - crashkernel=256M
    storage:
      files:
        - path: /etc/kdump.conf 4
          mode: 0644
          overwrite: true
          contents:
            inline: |
              path /var/crash
              core_collector makedumpfile -l --message-level 7 -d 31
    
        - path: /etc/sysconfig/kdump 5
          mode: 0644
          overwrite: true
          contents:
            inline: |
              KDUMP_COMMANDLINE_REMOVE="hugepages hugepagesz slub_debug quiet log_buf_len swiotlb"
              KDUMP_COMMANDLINE_APPEND="irqpoll nr_cpus=1 reset_devices cgroup_disable=memory mce=off numa=off udev.children-max=2 panic=10 rootflags=nofail acpi_no_memhotplug transparent_hugepage=never nokaslr novmcoredd hest_disable" 6
              KEXEC_ARGS="-s"
              KDUMP_IMG="vmlinuz"
    
    systemd:
      units:
        - name: kdump.service
          enabled: true
    1 2
    コントロールプレーンノードの MachineConfig オブジェクトの作成時に、両方の場所にある workermaster に置き換えます。
    3
    カーネル引数を指定して、クラッシュカーネル用にメモリーを予約します。必要に応じて、他のカーネル引数を追加できます。ppc64le プラットフォームの場合、crashkernel の推奨値は crashkernel=2G-4G:384M,4G-16G:512M,16G-64G:1G,64G-128G:2G,128G-:4G です。
    4
    デフォルトから /etc/kdump.conf の内容を変更する場合は、このセクションを追加し、インライン のサブセクションを変更します。
    5
    /etc/sysconfig/kdump の内容をデフォルトから変更する場合は、このセクションを追加し、随時、インライン のサブセクションを変更します。
    6
    ppc64le プラットフォームの場合は、nr_cpus=1maxcpus=1 に置き換えますが、これはこのプラットフォームではサポートされていません。
  2. Butane を使用して、ノードに配信する設定が含まれる、マシン設定 YAML ファイル (99-worker-kdump.yaml) を生成します。

    $ butane 99-worker-kdump.bu -o 99-worker-kdump.yaml
  3. クラスターのセットアップ中に、YAML ファイルを <installation_directory>/manifests/ ディレクトリーに配置します。YAML ファイルを使用してクラスターの設定後にこの MachineConfig オブジェクトを作成することもできます。

    $ oc create -f 99-worker-kdump.yaml

7.4.1.3. kdump 設定のテスト

kdump については、RHEL ドキュメントの Testing the kdump configuration セクションを参照してください。

7.4.1.4. コアダンプの分析

kdump については、RHEL ドキュメントの Analyzing a core dump セクションを参照してください。

注記

別の RHEL システムで vmcore 分析を実行することが推奨されます。

関連情報

7.4.2. Ignition の失敗のデバッグ

マシンをプロビジョニングできない場合、Ignition は失敗し、RHCOS は緊急シェルで起動します。デバッグ情報を取得するには、次の手順を使用します。

手順

  1. 次のコマンドを実行して、失敗したサービスユニットを表示します。

    $ systemctl --failed
  2. オプション: 個々のサービスユニットで次のコマンドを実行して、詳細を確認します。

    $ journalctl -u <unit>.service