24.2. 安装问题的故障排除
为了帮助对 OpenShift Container Platform 安装进行故障排除,您可以从 bootstrap 和 control plane 机器收集日志。您还可以从安装程序获取调试信息。如果您无法使用日志和调试信息解决问题,请参阅确定组件特定故障排除的安装问题。
如果您的 OpenShift Container Platform 安装失败,且 debug 输出或日志包含网络超时或其他连接错误,请查看配置防火墙。从防火墙和负载均衡器收集日志可帮助您诊断与网络相关的错误。
24.2.1. 先决条件
- 已尝试安装 OpenShift Container Platform 集群,且安装失败。
24.2.2. 从失败安装中收集日志
如果您为安装程序提供了 SSH 密钥,则可以收集有关失败安装的数据。
与从正在运行的集群收集日志相比,您可以使用其他命令收集失败安装的日志。如果必须从正在运行的集群中收集日志,请使用 oc adm must-gather
命令。
先决条件
- 在 bootstrap 过程完成前,OpenShift Container Platform 安装会失败。bootstrap 节点正在运行,并可通过 SSH 访问。
-
ssh-agent
进程在您的计算机上处于活跃状态,并且为ssh-agent
进程和安装程序提供了相同的 SSH 密钥。 - 如果尝试在您置备的基础架构上安装集群,则必须具有 bootstrap 和 control plane 节点的完全限定域名。
流程
生成从 bootstrap 和 control plane 机器获取安装日志的命令:
如果您使用安装程序置备的基础架构,请切换到包含安装程序的目录,并运行以下命令:
$ ./openshift-install gather bootstrap --dir <installation_directory> 1
- 1
installation_directory
是您在运行时指定的目录。/openshift-install create cluster
。此目录包含安装程序创建的 OpenShift Container Platform 定义文件。
对于安装程序置备的基础架构,安装程序会保存有关集群的信息,因此您不用指定主机名或 IP 地址。
如果您使用您置备的基础架构,请切换到包含安装程序的目录,并运行以下命令:
$ ./openshift-install gather bootstrap --dir <installation_directory> \ 1 --bootstrap <bootstrap_address> \ 2 --master <master_1_address> \ 3 --master <master_2_address> \ 4 --master <master_3_address>" 5
注意默认集群包含三台 control plane 机器。如所示,列出所有 control plane 机器,无论您的集群使用了多少个。
输出示例
INFO Pulling debug logs from the bootstrap machine INFO Bootstrap gather logs captured here "<installation_directory>/log-bundle-<timestamp>.tar.gz"
如果您提交有关安装失败的红帽支持问题单,请在问题单中包含压缩日志。
24.2.3. 使用到主机的 SSH 访问手动收集日志
在 must-gather
或自动收集方法无法正常工作的情况下手动收集日志。
默认情况下,基于 Red Hat OpenStack Platform(RHOSP)的安装禁用对 OpenShift Container Platform 节点的 SSH 访问。
先决条件
- 您必须有到主机的 SSH 访问权限。
流程
运行以下命令,使用
journalctl
命令从 bootstrap 主机收集bootkube.service
服务日志:$ journalctl -b -f -u bootkube.service
使用 podman logs 收集 bootstrap 主机的容器日志。这显示为从主机获取所有容器日志的循环:
$ for pod in $(sudo podman ps -a -q); do sudo podman logs $pod; done
或者,运行以下命令来使用
tail
命令收集主机的容器日志:# tail -f /var/lib/containers/storage/overlay-containers/*/userdata/ctr.log
运行以下命令,使用
journalctl
命令从 master 和 worker 主机收集kubelet.service
和crio.service
服务日志:$ journalctl -b -f -u kubelet.service -u crio.service
运行以下命令,使用
tail
命令收集 master 和 worker 主机容器日志:$ sudo tail -f /var/log/containers/*
24.2.4. 在不使用 SSH 访问主机的情况下手动收集日志
在 must-gather
或自动收集方法无法正常工作的情况下手动收集日志。
如果您无法通过 SSH 访问节点,您可以访问系统日志来调查主机上发生的情况。
先决条件
- OpenShift Container Platform 安装必须已完成。
- API 服务仍然可以正常工作。
- 您有系统管理员特权。
流程
通过运行以下命令访问
/var/log
中的 Accessjournald
单元日志:$ oc adm node-logs --role=master -u kubelet
运行以下命令访问
/var/log
中的主机文件路径:$ oc adm node-logs --role=master --path=openshift-apiserver
24.2.5. 从安装程序获取调试信息
您可以使用以下任一操作从安装程序获取调试信息。
在 hidden
.openshift_install.log 文件中查看
来自过去安装的调试信息。例如,输入:$ cat ~/<installation_directory>/.openshift_install.log 1
- 1
- 对于
installation_directory
,请指定您在运行时指定的同一目录。/openshift-install create cluster
。
进入包含安装程序的目录,并使用
--log-level=debug
重新运行它:$ ./openshift-install create cluster --dir <installation_directory> --log-level debug 1
- 1
- 对于
installation_directory
,请指定您在运行时指定的同一目录。/openshift-install create cluster
。
24.2.6. 重新安装 OpenShift Container Platform 集群
如果您无法调试并解决失败的 OpenShift Container Platform 安装中的问题,请考虑安装新的 OpenShift Container Platform 集群。在再次开始安装过程前,您必须完成彻底的清理。对于用户置备的基础架构(UPI)安装,您必须手动销毁集群并删除所有关联的资源。以下流程用于安装程序置备的基础架构(IPI)安装。
流程
销毁集群并删除与集群关联的所有资源,包括安装目录中的隐藏安装程序状态文件:
$ ./openshift-install destroy cluster --dir <installation_directory> 1
- 1
installation_directory
是您在运行时指定的目录。/openshift-install create cluster
。此目录包含安装程序创建的 OpenShift Container Platform 定义文件。
在重新安装集群前,删除安装目录:
$ rm -rf <installation_directory>
- 按照安装新 OpenShift Container Platform 集群的步骤进行操作。