Translated message

A translation of this page exists in English.

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

Solution Verified - Updated -

Environment

  • Red Hat OpenShift Container Platform (RHOCP)
    • 4
  • Red Hat Enterprise Linux CoreOS (RHCOS)
  • sos

Issue

  • oc debug node が機能しない場合に、OCP 4 の Red Hat Enterprise Linux CoreOS で sos report を生成するにはどうすればよいですか?
  • Red Hat OpenShift 4 ノードの sos report を生成するにはどうすればよいですか?
  • rhel9/support-tools イメージを使用して sos report を生成すると、トレースバックで失敗します。

    [root@ip-1-1-1-1 ~]# podman run -it registry.redhat.io/rhel9/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 ノードは イミュータブルであり、クラスターの変更を適用するには Operator に依存します。つまり、SSH で基礎になるノードに直接アクセスすることは、推奨される手順ではないことを意味します。さらに、ノードは アクセス済み としてテイントされます。

注記:上記の理由により、可能な場合は常に、oc コマンドラインから直接デバッグ Pod を生成して、SSH を使用せずに sos report を生成します。詳細は How to generate sos report within nodes without SSH in OCP 4 を参照してください。

SSH アクセスによる sos report の生成

SSH なしで sos report を生成 できない場合は、SSH 経由で sos report を生成する OpenShift 4 ノードに接続し、root に切り替えます。

$ ssh core@[NODE] # ssh with core user to the NODE using ssh key specified in install-config.yaml
[core@node ~]$ sudo -i

注記: 非接続環境では、registry.redhat.io/rhel9/support-tools をミラーリングする必要があります。ノードでイメージがすでに使用できる場合は、toolbox を実行する前に、次のようにノード内に /root/.toolboxrc ファイルを作成してください (REGISTRY 変数はレジストリーの URL に、IMAGE 名はカスタムレジストリー内の名前に変更してください)。

[root@node ~]# vi /root/.toolboxrc
REGISTRY=[custom-private-registry.example.com:5000]
IMAGE=rhel9/support-tools

クラスター環境でプロキシーが使用されている場合は、Cannot use toolbox in proxy environment の記事で説明されているように、プロキシー設定がインポートされていることを確認してください。

toolbox コマンドを実行します。

[root@node ~]# toolbox 
Spawning a container 'toolbox-root' with image 'registry.redhat.io/rhel9/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/rhel9/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/rhel9/support-tools:latest

sos report コマンドを実行します (生成された sos report が大きすぎる場合は --all-logs パラメーターを削除します)。

[root@node ~]# sos report -e openshift -e openshift_ovn -e openvswitch -e podman -e crio -k crio.all=on -k crio.logs=on -k podman.all=on -k podman.logs=on -k networking.ethtool-namespaces=off --all-logs --plugin-timeout=600

これにより、ホストの /var/tmp/ にマップされるコンテナーの /host/var/tmp ディレクトリーに sos report が生成されます。生成された sos report をサポートケースに添付するには、How to provide an sos report from a RHEL CoreOS OpenShift 4 node を参照してください。

sos report が作成されたら、exit を実行してコンテナーのノードへの bash セッションを終了し、もう一度実行してノードから終了します。

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

Root Cause

toolbox コマンドは、podman container runlabel run registry.redhat.io/rhel9/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