验证和故障排除


OpenShift Container Platform 4.14

验证 OpenShift Container Platform 安装并进行故障排除

Red Hat OpenShift Documentation Team

摘要

本文档论述了如何验证和故障排除 OpenShift Container Platform 安装。

第 1 章 验证安装

您可以按照本文档中的步骤在安装后检查 OpenShift Container Platform 集群的状态。

/validating-an-installation.adoc

1.1. 查看安装日志

您可以在 OpenShift Container Platform 安装日志中查看安装概述。如果安装成功,日志中包括访问集群所需的信息。

先决条件

  • 有访问安装主机的访问权限。

流程

  • 查看安装主机上安装目录中的 .openshift_install.log 日志文件:

    $ cat <install_dir>/.openshift_install.log

    输出示例

    如果安装成功,日志末尾会包括集群凭证,如下例所示:

    ...
    time="2020-12-03T09:50:47Z" level=info msg="Install complete!"
    time="2020-12-03T09:50:47Z" level=info msg="To access the cluster as the system:admin user when using 'oc', run 'export KUBECONFIG=/home/myuser/install_dir/auth/kubeconfig'"
    time="2020-12-03T09:50:47Z" level=info msg="Access the OpenShift web-console here: https://console-openshift-console.apps.mycluster.example.com"
    time="2020-12-03T09:50:47Z" level=info msg="Login to the console with user: \"kubeadmin\", and password: \"password\""
    time="2020-12-03T09:50:47Z" level=debug msg="Time elapsed per stage:"
    time="2020-12-03T09:50:47Z" level=debug msg="    Infrastructure: 6m45s"
    time="2020-12-03T09:50:47Z" level=debug msg="Bootstrap Complete: 11m30s"
    time="2020-12-03T09:50:47Z" level=debug msg=" Bootstrap Destroy: 1m5s"
    time="2020-12-03T09:50:47Z" level=debug msg=" Cluster Operators: 17m31s"
    time="2020-12-03T09:50:47Z" level=info msg="Time elapsed: 37m26s"

1.2. 查看镜像拉取源

对于没有网络连接的集群,您可以使用节点上的命令来查看拉取的镜像源,如 crictl 镜像

但是,对于断开连接的安装,若要查看拉取镜像的来源,您必须查看 CRI-O 日志以查找 Trying 以访问 日志条目,如下所示。查看镜像拉取源的其他方法,如 crictl images 命令,显示非镜像镜像的镜像名称,即使镜像是从镜像位置拉取的。

先决条件

  • 您可以使用具有 cluster-admin 角色的用户访问集群。

流程

  • 查看 master 或 worker 节点的 CRI-O 日志:

    $  oc adm node-logs <node_name> -u crio

    输出示例

    用于访问日志条目的 Trying 指示镜像要从中拉取的位置。

    ...
    Mar 17 02:52:50 ip-10-0-138-140.ec2.internal crio[1366]: time="2021-08-05 10:33:21.594930907Z" level=info msg="Pulling image: quay.io/openshift-release-dev/ocp-release:4.10.0-ppc64le" id=abcd713b-d0e1-4844-ac1c-474c5b60c07c name=/runtime.v1alpha2.ImageService/PullImage
    Mar 17 02:52:50 ip-10-0-138-140.ec2.internal crio[1484]: time="2021-03-17 02:52:50.194341109Z" level=info msg="Trying to access \"li0317gcp1.mirror-registry.qe.gcp.devcluster.openshift.com:5000/ocp/release@sha256:1926eae7cacb9c00f142ec98b00628970e974284b6ddaf9a6a086cb9af7a6c31\""
    Mar 17 02:52:50 ip-10-0-138-140.ec2.internal crio[1484]: time="2021-03-17 02:52:50.226788351Z" level=info msg="Trying to access \"li0317gcp1.mirror-registry.qe.gcp.devcluster.openshift.com:5000/ocp/release@sha256:1926eae7cacb9c00f142ec98b00628970e974284b6ddaf9a6a086cb9af7a6c31\""
    ...

    日志可能会显示镜像拉取源两次,如上例中所示。

    如果您的 ImageContentSourcePolicy 对象列出了多个镜像,OpenShift Container Platform 会尝试按照配置中列出的顺序拉取镜像,例如:

    Trying to access \"li0317gcp1.mirror-registry.qe.gcp.devcluster.openshift.com:5000/ocp/release@sha256:1926eae7cacb9c00f142ec98b00628970e974284b6ddaf9a6a086cb9af7a6c31\"
    Trying to access \"li0317gcp2.mirror-registry.qe.gcp.devcluster.openshift.com:5000/ocp/release@sha256:1926eae7cacb9c00f142ec98b00628970e974284b6ddaf9a6a086cb9af7a6c31\"

/validating-an-installation.adoc

1.3. 获取集群版本、状态和更新详情

您可以通过运行 oc get clusterversion 命令来查看集群版本和状态。如果状态显示安装仍在进行,您可以查看 Operator 的状态以了解更多信息。

您还可以列出当前的更新频道并查看可用的集群更新。

先决条件

  • 您可以使用具有 cluster-admin 角色的用户访问集群。
  • 已安装 OpenShift CLI(oc)。

流程

  1. 获取集群版本和总体状态:

    $ oc get clusterversion

    输出示例

    NAME      VERSION   AVAILABLE   PROGRESSING   SINCE   STATUS
    version   4.6.4     True        False         6m25s   Cluster version is 4.6.4

    示例输出显示集群已被成功安装。

  2. 如果集群状态表示安装仍在进行,您可以通过检查 Operator 状态来获取更详细的进度信息:

    $ oc get clusteroperators.config.openshift.io
  3. 查看集群规格、更新可用性和更新历史记录的详细概述:

    $ oc describe clusterversion
  4. 列出当前的更新频道:

    $ oc get clusterversion -o jsonpath='{.items[0].spec}{"\n"}'

    输出示例

    {"channel":"stable-4.6","clusterID":"245539c1-72a3-41aa-9cec-72ed8cf25c5c"}

  5. 查看可用的集群更新:

    $ oc adm upgrade

    输出示例

    Cluster version is 4.6.4
    
    Updates:
    
    VERSION IMAGE
    4.6.6   quay.io/openshift-release-dev/ocp-release@sha256:c7e8f18e8116356701bd23ae3a23fb9892dd5ea66c8300662ef30563d7104f39

其他资源

/validating-an-installation.adoc

1.4. 验证集群是否使用短期凭证

您可以通过检查集群中的 Cloud Credential Operator (CCO) 配置和其他值来验证集群是否对各个组件使用简短安全凭证。

先决条件

  • 已使用 Cloud Credential Operator 实用程序(ccoctl)部署了 OpenShift Container Platform 集群来实现短期凭证。
  • 已安装 OpenShift CLI(oc)。
  • 您以具有 cluster-admin 权限的用户身份登录。

流程

  • 运行以下命令,验证 CCO 是否配置为以手动模式运行:

    $ oc get cloudcredentials cluster \
      -o=jsonpath={.spec.credentialsMode}

    以下输出确认 CCO 以手动模式运行:

    输出示例

    Manual

  • 运行以下命令,验证集群没有 root 凭证:

    $ oc get secrets \
      -n kube-system <secret_name>

    其中 <secret_name> 是云供应商的 root secret 的名称。

    平台Secret 名称

    Amazon Web Services (AWS)

    aws-creds

    Microsoft Azure

    azure-credentials

    Google Cloud Platform (GCP)

    gcp-credentials

    一个错误确认集群中不存在 root secret。

    AWS 集群的输出示例

    Error from server (NotFound): secrets "aws-creds" not found

  • 运行以下命令,验证组件是否在单个组件中使用短期安全凭证:

    $ oc get authentication cluster \
      -o jsonpath \
      --template='{ .spec.serviceAccountIssuer }'

    此命令显示集群 Authentication 对象中 .spec.serviceAccountIssuer 参数的值。与云供应商关联的 URL 的输出表示集群使用从集群外部创建和管理的简短凭证的手动模式。

  • Azure 集群:通过运行以下命令,验证组件假定 secret 清单中指定的 Azure 客户端 ID:

    $ oc get secrets \
      -n openshift-image-registry installer-cloud-credentials \
      -o jsonpath='{.data}'

    输出中包含了 azure_client_idazure_federated_token_file 字段代表组件假定 Azure 客户端 ID。

  • Azure 集群 :运行以下命令来验证 pod 身份 Webhook 是否正在运行:

    $ oc get pods \
      -n openshift-cloud-credential-operator

    输出示例

    NAME                                         READY   STATUS    RESTARTS   AGE
    cloud-credential-operator-59cf744f78-r8pbq   2/2     Running   2          71m
    pod-identity-webhook-548f977b4c-859lz        1/1     Running   1          70m

/validating-an-installation.adoc

1.5. 使用 CLI 查询集群节点状态

您可以在安装后验证集群节点的状态。

先决条件

  • 您可以使用具有 cluster-admin 角色的用户访问集群。
  • 已安装 OpenShift CLI(oc)。

流程

  1. 列出集群节点的状态。验证输出是否列出所有预期的 control plane 和计算节点,以及每个节点的状态是否为 Ready

    $ oc get nodes

    输出示例

    NAME                          STATUS   ROLES    AGE   VERSION
    compute-1.example.com         Ready    worker   33m   v1.27.3
    control-plane-1.example.com   Ready    master   41m   v1.27.3
    control-plane-2.example.com   Ready    master   45m   v1.27.3
    compute-2.example.com         Ready    worker   38m   v1.27.3
    compute-3.example.com         Ready    worker   33m   v1.27.3
    control-plane-3.example.com   Ready    master   41m   v1.27.3

  2. 查看每个集群节点的 CPU 和内存资源的可用性:

    $ oc adm top nodes

    输出示例

    NAME                          CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%
    compute-1.example.com         128m         8%     1132Mi          16%
    control-plane-1.example.com   801m         22%    3471Mi          23%
    control-plane-2.example.com   1718m        49%    6085Mi          40%
    compute-2.example.com         935m         62%    5178Mi          75%
    compute-3.example.com         111m         7%     1131Mi          16%
    control-plane-3.example.com   942m         26%    4100Mi          27%

/validating-an-installation.adoc

1.6. 从 OpenShift Container Platform Web 控制台查看集群状态

您可以在 OpenShift Container Platform Web 控制台中的 Overview 页面中查看以下信息:

  • 集群的一般状态
  • control plane、集群 Operator 和存储的状态
  • CPU、内存、文件系统、网络传输和 pod 可用性
  • 集群的 API 地址、集群 ID 和供应商名称
  • 集群版本信息
  • 集群更新状态,包括当前更新频道和可用更新的详情
  • 详细节点、pod、存储类和持久性卷声明(PVC)信息的集群清单
  • 持续集群活动和最近事件列表

先决条件

  • 您可以使用具有 cluster-admin 角色的用户访问集群。

流程

  • Administrator 视角中,导航到 HomeOverview

/validating-an-installation.adoc

1.7. 查看 Red Hat OpenShift Cluster Manager 中的集群状态

在 OpenShift Container Platform Web 控制台中,您可以查看 OpenShift Cluster Manager 上集群状态的详细信息。

先决条件

流程

  1. 进入 OpenShift Cluster Manager 中的 Clusters 列表,并找到您的 OpenShift Container Platform 集群。
  2. 点集群的 Overview 选项卡。
  3. 查看有关集群的以下信息:

    • vCPU 和内存可用性和资源使用情况
    • 集群 ID、状态、类型、区域和供应商名称
    • 按节点类型划分的节点数
    • 集群版本详情、集群的创建日期和集群所有者的名称
    • 集群的生命周期支持状态
    • 订阅信息,包括服务级别协议(SLA)状态、订阅单元类型、集群的生产环境状态、订阅责任和服务级别

      提示

      要查看集群的历史记录,请点 Cluster history 选项卡。

  4. 导航到 Monitoring 页面查看以下信息:

    • 已检测到的问题列表
    • 正在触发的警报列表
    • 集群 Operator 状态和版本
    • 集群的资源使用情况
  5. 可选:您可以通过进入 Overview 菜单来查看 Red Hat Insights 收集的集群信息。在这个菜单中,您可以查看以下信息:

    • 集群可能会暴露的问题,按风险级别分类
    • 根据类别进行健康检查的状态

其他资源

/validating-an-installation.adoc

1.8. 检查集群资源的可用性和使用

OpenShift Container Platform 提供了一组全面的监控仪表板,可帮助您了解集群组件的状态。

Administrator 视角中,您可以访问 OpenShift Container Platform 核心组件的仪表板,包括:

  • etcd
  • Kubernetes 计算资源
  • Kubernetes 网络资源
  • Prometheus
  • 与集群和节点性能相关的仪表板

图 1.1. 计算资源仪表板示例

监控仪表板计算资源

先决条件

  • 您可以使用具有 cluster-admin 角色的用户访问集群。

流程

  1. 在 OpenShift Container Platform web 控制台的 Administrator 视角中,进入到 ObserveDashboards
  2. Dashboard 列表中选择一个仪表板。有些仪表板(如 etcd 仪表板)在被选择时会生成额外的子菜单。
  3. 可选:在 Time Range 列表中为图形选择一个时间范围。

    • 选择预定义的时间段。
    • 通过选择 Time Range 列表中的 Custom 时间范围 来设置自定义时间范围。

      1. 输入或选择 FromTo date and time。
      2. 单击 Save 以保存自定义时间范围。
  4. 可选:选择一个 Refresh Interval
  5. 将鼠标悬停在仪表板中的每个图形上,以显示特定项目的详细信息。

其他资源

  • 如需有关 OpenShift Container Platform 监控堆栈的更多信息,请参阅监控概述

/validating-an-installation.adoc

1.9. 列出正在触发的警报

当 OpenShift Container Platform 集群中有一组定义的条件满足时,警报会提供通知。您可以使用 OpenShift Container Platform Web 控制台中的 Alerting UI 查看集群中触发的警报。

先决条件

  • 您可以使用具有 cluster-admin 角色的用户访问集群。

流程

  1. Administrator 视角中,导航到 ObserveAlertingAlerts 页面。
  2. 查看正在触发的警报,包括 严重性 状态和 来源
  3. Alert Details 页面中选择一个警报来查看更详细的信息。

其他资源

  • 如需有关 OpenShift Container Platform 中警报的更多信息,请参阅管理 警报。

1.10. 后续步骤

第 2 章 安装问题的故障排除

为了帮助对 OpenShift Container Platform 安装进行故障排除,您可以从 bootstrap 和 control plane 机器收集日志。您还可以从安装程序获取调试信息。如果您无法使用日志和调试信息解决问题,请参阅确定组件特定故障排除的安装问题

注意

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

2.1. 先决条件

  • 已尝试安装 OpenShift Container Platform 集群,且安装失败。

2.2. 从失败安装中收集日志

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

注意

与从正在运行的集群收集日志相比,您可以使用其他命令收集失败安装的日志。如果必须从正在运行的集群中收集日志,请使用 oc adm must-gather 命令。

先决条件

  • 在 bootstrap 过程完成前,OpenShift Container Platform 安装会失败。bootstrap 节点正在运行,并可通过 SSH 访问。
  • ssh-agent 进程在您的计算机上处于活跃状态,并且为 ssh-agent 进程和安装程序提供了相同的 SSH 密钥。
  • 如果尝试在您置备的基础架构上安装集群,则必须具有 bootstrap 和 control plane 节点的完全限定域名。

流程

  1. 生成从 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
      1
      对于 installation_directory,请指定您在运行时指定的同一目录 。/openshift-install create cluster。此目录包含安装程序创建的 OpenShift Container Platform 定义文件。
      2
      <bootstrap_address> 是集群 bootstrap 机器的完全限定域名或 IP 地址。
      3 4 5
      对于集群中的每个 control plane 或 master 机器,将 <master_*_address> 替换为其完全限定域名或 IP 地址。
      注意

      默认集群包含三台 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"

    如果您提交有关安装失败的红帽支持问题单,请在问题单中包含压缩日志。

2.3. 使用到主机的 SSH 访问手动收集日志

must-gather 或自动收集方法无法正常工作的情况下手动收集日志。

重要

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

先决条件

  • 您必须有到主机的 SSH 访问权限。

流程

  1. 运行以下命令,使用 journalctl 命令从 bootstrap 主机收集 bootkube.service 服务日志:

    $ journalctl -b -f -u bootkube.service
  2. 使用 podman logs 收集 bootstrap 主机的容器日志。这显示为从主机获取所有容器日志的循环:

    $ 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 命令从 master 和 worker 主机收集 kubelet.servicecrio.service 服务日志:

    $ journalctl -b -f -u kubelet.service -u crio.service
  5. 运行以下命令,使用 tail 命令收集 master 和 worker 主机容器日志:

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

2.4. 在不使用 SSH 访问主机的情况下手动收集日志

must-gather 或自动收集方法无法正常工作的情况下手动收集日志。

如果您无法通过 SSH 访问节点,您可以访问系统日志来调查主机上发生的情况。

先决条件

  • OpenShift Container Platform 安装必须已完成。
  • API 服务仍然可以正常工作。
  • 您有系统管理员特权。

流程

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

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

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

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

2.6. 重新安装 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 集群的步骤进行操作。

Legal Notice

Copyright © 2024 Red Hat, Inc.

OpenShift documentation is licensed under the Apache License 2.0 (https://www.apache.org/licenses/LICENSE-2.0).

Modified versions must remove all Red Hat trademarks.

Portions adapted from https://github.com/kubernetes-incubator/service-catalog/ with modifications by Red Hat.

Red Hat, Red Hat Enterprise Linux, the Red Hat logo, the Shadowman logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.

Linux® is the registered trademark of Linus Torvalds in the United States and other countries.

Java® is a registered trademark of Oracle and/or its affiliates.

XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.

MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.

Node.js® is an official trademark of Joyent. Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.

The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation’s permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.

All other trademarks are the property of their respective owners.

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.