Translated message

A translation of this page exists in English.

Warning message

This translation is outdated. For the most up-to-date information, please refer to the English version.

Red Hat Enterprise Linux CoreOS 4.x でノードへの SSH アクセスを使用して sos レポートを生成する方法

Solution Verified - Updated -

Environment

- Red Hat OpenShift Container Platform (RHOCP、OCP)
- 4.x
- Red Hat Enterprise Linux CoreOS (RHCOS)

Issue

* Red Hat Enterprise Linux CoreOS 4.x で sos report を生成するにはどうすればよいですか?
* Red Hat OpenShift 4.x ノードの sos report を生成するにはどうすればよいですか?
* rhel7/support-tools イメージを使用して sos report を生成すると、トレースバックで失敗します。

    [root@ip-1-1-1-1 ~]# podman run -it registry.access.redhat.com/rhel7/support-tools /usr/bin/bash

    bash-4.2# sosreport 
    Traceback (most recent call last):
      File "/usr/sbin/sosreport", line 19, in <module>
        main(sys.argv[1:])
      File "/usr/lib/python2.7/site-packages/sos/sosreport.py", line 1498, in main
        sos = SoSReport(args)
      File "/usr/lib/python2.7/site-packages/sos/sosreport.py", line 360, in __init__
        self.policy = sos.policies.load(sysroot=self.opts.sysroot)
      File "/usr/lib/python2.7/site-packages/sos/policies/__init__.py", line 44, in load
        cache['policy'] = policy(sysroot=sysroot)
      File "/usr/lib/python2.7/site-packages/sos/policies/redhat.py", line 258, in __init__
        super(RHELPolicy, self).__init__(sysroot=sysroot)
      File "/usr/lib/python2.7/site-packages/sos/policies/redhat.py", line 58, in __init__
        sysroot = self._container_init()
      File "/usr/lib/python2.7/site-packages/sos/policies/redhat.py", line 153, in _container_init
        host_tmp_dir = os.path.abspath(self._host_sysroot + self._tmp_dir)
    TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'

Resolution

重要事項: 設計上、OpenShift 4.x クラスターはイミュータブルであり、Operators に依存してクラスターの変更を適用します。つまり、SSH で基礎になるノードに直接アクセスすることは、推奨される手順ではないことを意味します。さらに、ノードは アクセス済み としてテイントされます。
したがって、可能な場合は常に、oc コマンドラインから直接デバッグ Pod を生成することにより、SSH を使用せずに sos report を生成します。詳細は、How to generate a sosreport within nodes without SSH in OCP 4 を参照してください。

SSH なしで sos report を生成 できない場合にのみ、SSH 経由で sos report が生成される OpenShift Container Platform4.x ノードに接続します。その後、roottoolbox コマンドを実行します。

$ ssh core@NODE # ssh with core user using ssh key specified in install-config.yaml
[core@node ~]$ sudo -i
[root@node ~]# toolbox 
Spawning a container 'toolbox-root' with image 'registry.redhat.io/rhel8/support-tools'
Detected RUN label in the container image. Using that as the default...
Command: /proc/self/exe run -it --name toolbox-root --privileged --ipc=host --net=host --pid=host -e HOST=/host -e NAME=toolbox-root -e IMAGE=registry.redhat.io/rhel8/support-tools:latest -v /run:/run -v /var/log:/var/log -v /etc/machine-id:/etc/machine-id -v /etc/localtime:/etc/localtime -v /:/host registry.redhat.io/rhel8/support-tools:latest

注記: 切断された環境では、registry.redhat.io/rhel8/support-tools をミラーリングする必要があります。イメージがすでに使用可能な場合は、toolbox を実行する前に、以下のようにノード内に /root/.toolboxrc ファイルを作成します。

$ vi /root/.toolboxrc
REGISTRY=private-registry.example.com:5000
IMAGE=rhel8/support-tools

これで、CLI がコンテナー内の新しい bash セッションにアタッチされ、sos report を実行できるようになります。

[root@node ~]# sos report -k crio.all=on -k crio.logs=on  -k podman.all=on -k podman.logs=on

これにより、ホストの /var/tmp/ にマップされるコンテナーの /host/var/tmp ディレクトリーに sos report が生成されます。

sos report が作成されたら、exit を実行してコンテナーを終了します。

[root@node ~]# exit
[root@node ~]# 

Root Cause

toolbox コマンドは、podman container runlabel run registry.redhat.io/rhel8/support-tools を実行します。これは、RHEL Atomic Host の atomic run registry.redhat.io/rhel7/support-tools を置き換えるものです。

Diagnostic Steps

toolbox がデバッグコンテナーを想定どおりに起動しない場合は、REGISTRYIMAGE、または TOOLBOX_NAME オプションのデフォルト値をオーバーライドしている可能性のあるユーザー作成の $HOME/.toolboxrc を確認してください。
切断された環境では、ミラーリングされたイメージを参照するために、そのファイルを作成する必要があります。

This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.

Comments