第 24 章 验证和故障排除


24.1. 验证安装

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

24.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"

24.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\"

24.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

其他资源

24.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

24.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.29.4
    control-plane-1.example.com   Ready    master   41m   v1.29.4
    control-plane-2.example.com   Ready    master   45m   v1.29.4
    compute-2.example.com         Ready    worker   38m   v1.29.4
    compute-3.example.com         Ready    worker   33m   v1.29.4
    control-plane-3.example.com   Ready    master   41m   v1.29.4

  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%

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

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

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

先决条件

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

流程

  • Administrator 视角中,导航到 Home Overview

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

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

先决条件

流程

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

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

      提示

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

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

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

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

其他资源

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

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

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

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

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

监控仪表板计算资源

先决条件

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

流程

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

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

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

其他资源

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

24.1.9. 列出正在触发的警报

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

先决条件

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

流程

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

其他资源

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

24.1.10. 后续步骤

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.