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.

ノードへの SSH アクセスを使用して RedHat Enterprise Linux CoreOS 4.x で sosreport を生成するにはどうすればよいですか?

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で sosreport を生成する方法は?
  • Red Hat OpenShift 4.x ノードの sosreport を生成する方法は?
  • rhel7/support-tools イメージを使用して sosreport を生成すると、トレースバックで失敗します。
[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 を使用せずに sosreport を生成します。詳細は、「How to generate SOSREPORT within OpenShift4 nodes without SSH」を参照してください。

SSH なしで sosreport を生成 できない場合にのみ、SSH 経由で sosreport が生成される OpenShift Container Platform4.x ノードに接続します。

root ユーザーになります。次に、root として、toolbox コマンドを実行します。

$ 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

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

[root@node ~]# sosreport -k crio.all=on -k crio.logs=on

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

sosreport が作成されたら、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.