5.4. 为 OpenShift Container Platform 集群节点生成 sosreport 归档
为 OpenShift Container Platform 4.7 集群节点生成 sosreport
的建议方法是通过 debug pod。
先决条件
-
您可以使用具有
cluster-admin
角色的用户访问集群。 - 您需要有到主机的 SSH 访问权限。
-
已安装 OpenShift CLI(
oc
)。 - 您有红帽标准订阅或高级订阅。
- 您有红帽客户门户网站帐户。
- 您已有一个红帽支持问题单 ID。
流程
获取集群节点列表:
$ oc get nodes
在目标节点上进入一个 debug 会话。此步骤被实例化为一个名为
<node_name>-debug
的 debug pod:$ oc debug node/my-cluster-node
要在目标节点上进入带有
NoExecute
效果的 debug 会话,请向 dummy 命名空间添加一个容限,并在 dummy 命名空间中启动 debug pod:$ oc new-project dummy
$ oc patch namespace dummy --type=merge -p '{"metadata": {"annotations": { "scheduler.alpha.kubernetes.io/defaultTolerations": "[{\"operator\": \"Exists\"}]"}}}'
$ oc debug node/my-cluster-node
将
/host
设置为 debug shell 中的根目录。debug pod 在 pod 中的/host
中挂载主机的 root 文件系统。将根目录改为/host
,您可以运行主机可执行路径中包含的二进制文件:# chroot /host
注意运行 Red Hat Enterprise Linux CoreOS(RHCOS)的 OpenShift Container Platform 4.7 集群节点不可变,它依赖于 Operator 来应用集群更改。不建议使用 SSH 访问集群节点,节点将会标记为 accessed 污点。但是,如果 OpenShift Container Platform API 不可用,或 kubelet 在目标节点上无法正常工作,
oc
操作将会受到影响。在这种情况下,可以使用ssh core@<node>.<cluster_name>.<base_domain>
来访问节点。启动
toolbox
容器,其中包括运行sosreport
所需的二进制文件和插件:# toolbox
注意如果一个已存在的
toolbox
pod 已在运行,则toolbox
命令会输出'toolbox-' already exists.Trying to start…
.使用podman rm toolbox-
删除正在运行的 toolbox容器,并生成新的 toolbox 容器以避免sosreport
插件出现问题。收集
sosreport
归档。运行
sosreport
命令并启用crio.all
和crio.logs
CRI-O 容器引擎sosreport
插件:# sosreport -k crio.all=on -k crio.logs=on 1
- 1
-k
可让您在默认值之外定义sosreport
插件参数。
- 提示后按 Enter 键继续。
-
提供红帽支持问题单 ID。
sosreport
将 ID 添加到存档的文件名中。 sosreport
输出提供了归档的位置和 checksum。以下示例输出引用支持问题单 ID01234567
:Your sosreport has been generated and saved in: /host/var/tmp/sosreport-my-cluster-node-01234567-2020-05-28-eyjknxt.tar.xz 1 The checksum is: 382ffc167510fd71b4f12a4f40b97a4e
- 1
sosreport
归档的文件路径在chroot
环境之外,因为 toolbox 容器会在/host
挂载主机的根目录。
使用以下方法之一为红帽支持提供
sosreport
归档以供分析。将文件直接从 OpenShift Container Platform 集群上传到现有红帽支持问题单。
在 toolbox 容器内,运行
redhat-support-tool
将存档直接附加到现有红帽支持问题单中。这个示例使用问题单 ID01234567
:# redhat-support-tool addattachment -c 01234567 /host/var/tmp/my-sosreport.tar.xz 1
- 1
- toolbox 容器将主机的根目录挂载到
/host
。当指定要通过redhat-support-tool
命令上传的文件时,使用 toolbox 容器的根目录(包括/host/
)的绝对路径。
将文件上传到现有红帽支持问题单中。
运行
oc debug node/<node_name>
命令调整sosreport
归档,并将输出重定向到文件中。此命令假设您已退出以前的oc debug
会话:$ 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.xz 1
- 1
- debug 容器将主机的根目录挂载到
/host
。在指定用于连接的目标文件时,引用 debug 容器的根目录的绝对路径,包括/host
。
注意运行 Red Hat Enterprise Linux CoreOS(RHCOS)的 OpenShift Container Platform 4.7 集群节点不可变,它依赖于 Operator 来应用集群更改。不建议使用
scp
从集群节点传输sosreport
归档,这会使节点出现 accessed 污点。但是,如果 OpenShift Container Platform API 不可用,或 kubelet 在目标节点上无法正常工作,oc
操作将会受到影响。在这种情况下,可以通过运行scp core@<node>.<cluster_name>.<base_domain>:<file_path> <local_path>
从节点复制sosreport
归档文件。- 进入 https://access.redhat.com/support/cases/ 中的现有支持问题单。
- 选择 Attach files 并按提示上传该文件。