×

为了帮助您排除 OpenShift Container Platform 安装失败的问题,您可以从引导程序和控制平面机器收集日志。您还可以从安装程序获取调试信息。如果您无法使用日志和调试信息解决问题,请参阅 确定安装问题出现的位置,了解特定组件的故障排除。

如果您的 OpenShift Container Platform 安装失败,并且调试输出或日志包含网络超时或其他连接错误,请查看 配置防火墙 的指南。收集防火墙和负载均衡器的日志可以帮助您诊断与网络相关的错误。

先决条件

  • 您尝试安装 OpenShift Container Platform 集群,但安装失败。

收集失败安装的日志

如果您为安装程序提供了 SSH 密钥,则可以收集有关失败安装的数据。

收集有关不成功安装的日志的命令与收集运行集群的日志的命令不同。如果您必须收集运行集群的日志,请使用 oc adm must-gather 命令。

先决条件
  • 您的 OpenShift Container Platform 安装在引导程序进程完成之前失败。引导节点正在运行,并且可以通过 SSH 访问。

  • 您的计算机上 ssh-agent 进程处于活动状态,并且您为 ssh-agent 进程和安装程序提供了相同的 SSH 密钥。

  • 如果您尝试在您配置的基础架构上安装集群,则必须拥有引导程序和控制平面节点的完全限定域名。

步骤
  1. 生成从引导程序和控制平面机器获取安装日志所需的命令

    • 如果您使用了安装程序预配的基础设施,请切换到包含安装程序的目录并运行以下命令:

      $ ./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> \ (3)
          --master <master_3_address> (3)
      
      1 对于 installation_directory,请指定您运行 ./openshift-install create cluster 时指定的同一目录。此目录包含安装程序创建的 OpenShift Container Platform 定义文件。
      2 <bootstrap_address> 是集群引导程序机器的完全限定域名或 IP 地址。
      3 对于集群中的每个控制平面(或主)机器,请将 <master_*_address> 替换为其完全限定域名或 IP 地址。

      默认集群包含三个控制平面机器。列出您所有控制平面机器,如所示,无论您的集群使用多少台机器。

    示例输出
    INFO Pulling debug logs from the bootstrap machine
    INFO Bootstrap gather logs captured here "<installation_directory>/log-bundle-<timestamp>.tar.gz"

    如果您就安装失败问题开启了 Red Hat 支持案例,请在案例中包含压缩日志。

手动使用 SSH 访问您的主机收集日志

must-gather 或自动化收集方法无效的情况下,手动收集日志。

默认情况下,在基于 Red Hat OpenStack Platform (RHOSP) 的安装中,对 OpenShift Container Platform 节点的 SSH 访问是被禁用的。

先决条件
  • 您必须拥有对您主机(s)的 SSH 访问权限。

步骤
  1. 使用 journalctl 命令从引导程序主机收集 bootkube.service 服务日志,方法是运行:

    $ journalctl -b -f -u bootkube.service
  2. 使用 podman logs 收集引导程序主机的容器日志。这显示为一个循环,用于获取主机上的所有容器日志。

    $ for pod in $(sudo podman ps -a -q); do sudo podman logs $pod; done
  3. 或者,使用 tail 命令收集主机的容器日志,方法是运行:

    # tail -f /var/lib/containers/storage/overlay-containers/*/userdata/ctr.log
  4. 使用 journalctl 命令从主节点和工作节点收集 kubelet.servicecrio.service 服务日志,方法是运行:

    $ journalctl -b -f -u kubelet.service -u crio.service
  5. 使用 tail 命令收集主节点和工作节点的容器日志,方法是运行:

    $ sudo tail -f /var/log/containers/*

手动收集日志,无需 SSH 访问您的主机(s)

must-gather 或自动化收集方法无效的情况下,手动收集日志。

如果您没有对节点的 SSH 访问权限,您可以访问系统日志以调查主机上发生的情况。

先决条件
  • 您的 OpenShift Container Platform 安装必须已完成。

  • 您的 API 服务仍在运行。

  • 您拥有系统管理员权限。

步骤
  1. 通过运行以下命令访问 /var/log 下的 journald 单元日志:

    $ oc adm node-logs --role=master -u kubelet
  2. 通过运行以下命令访问 /var/log 下的主机文件路径:

    $ oc adm node-logs --role=master --path=openshift-apiserver

从安装程序获取调试信息

您可以使用以下任何操作从安装程序获取调试信息。

  • 查看隐藏的 .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 时指定的同一目录。

重新安装 OpenShift Container Platform 集群

如果您无法调试和解决失败的 OpenShift Container Platform 安装中的问题,请考虑安装新的 OpenShift Container Platform 集群。在再次启动安装过程之前,您必须完成彻底的清理。对于用户预配的基础设施 (UPI) 安装,您必须手动销毁集群并删除所有关联的资源。以下过程适用于安装程序预配的基础设施 (IPI) 安装。

步骤
  1. 销毁集群并删除与集群关联的所有资源,包括安装目录中的隐藏安装程序状态文件。

    $ ./openshift-install destroy cluster --dir <installation_directory> (1)
    1 installation_directory 是您运行 ./openshift-install create cluster 时指定的目录。此目录包含安装程序创建的 OpenShift Container Platform 定义文件。
  2. 在重新安装集群之前,请删除安装目录。

    $ rm -rf <installation_directory>
  3. 按照安装新的 OpenShift Container Platform 集群的过程操作。