21.8. 使用 vSphere 问题检测器 Operator


21.8.1. 关于 vSphere 问题检测器 Operator

vSphere 问题检测器 Operator 会检查在 vSphere 上部署的集群,以获取与存储相关的常见安装和错误配置问题。

Operator 在 openshift-cluster-storage-operator 命名空间中运行,并在 Cluster Storage Operator 检测到集群部署到 vSphere 时由 Cluster Storage Operator 启动。vSphere 问题检测器 Operator 与 vSphere vCenter 服务器通信,以确定集群中的虚拟机、默认数据存储以及 vSphere vCenter Server 配置的其他信息。Operator 使用 Cloud Credential Operator 中的凭证连接到 vSphere。

Operator 根据以下调度运行检查:

  • 检查每 8 小时运行一次。
  • 如果检查失败,Operator 会以 1 分钟、2 分钟、4 分钟、8 分钟等间隔再次运行检查。Operator 间隔最多为 8 小时。
  • 当所有检查都通过后,调度会返回到 8 小时间隔。

Operator 在失败后会增加检查的频率,以便 Operator 可以在修复失败条件后快速报告成功。您可以手动运行 Operator 来获取即时故障排除信息。

21.8.2. 运行 vSphere 问题检测器 Operator 检查

您可以覆盖运行 vSphere 问题检测器 Operator 检查的调度,并立即运行检查。

vSphere 问题检测器 Operator 每 8 小时自动运行检查。但是,当 Operator 启动时,它会立即运行检查。当 Cluster Storage Operator 启动并确定集群是否在 vSphere 上运行时,Operator 由 Cluster Storage Operator 启动。要立即运行检查,您可以将 vSphere 问题检测器 Operator 扩展至 0,并返回到 1,以便它重启 vSphere 问题检测器 Operator。

先决条件

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

流程

  1. 将 Operator 扩展至 0:

    $ oc scale deployment/vsphere-problem-detector-operator --replicas=0 \
        -n openshift-cluster-storage-operator

    如果部署没有立即缩减为零,您可以运行以下命令来等待 pod 退出:

    $ oc wait pods -l name=vsphere-problem-detector-operator \
        --for=delete --timeout=5m -n openshift-cluster-storage-operator
  2. 将 Operator 扩展至 1

    $ oc scale deployment/vsphere-problem-detector-operator --replicas=1 \
        -n openshift-cluster-storage-operator
  3. 删除旧的领导锁定,以加快 Cluster Storage Operator 的新领导选举机制:

    $ oc delete -n openshift-cluster-storage-operator \
        cm vsphere-problem-detector-lock

验证

  • 查看 vSphere 问题检测器 Operator 生成的事件或日志。确认事件或日志具有最新的时间戳。

21.8.3. 从 vSphere 问题检测器 Operator 中查看事件

在 vSphere 问题检测器 Operator 运行并执行配置检查后,它会创建可从命令行或 OpenShift Container Platform Web 控制台查看的事件。

流程

  • 要使用命令行查看事件,请运行以下命令:

    $ oc get event -n openshift-cluster-storage-operator \
        --sort-by={.metadata.creationTimestamp}

    输出示例

    16m     Normal    Started             pod/vsphere-problem-detector-operator-xxxxx         Started container vsphere-problem-detector
    16m     Normal    Created             pod/vsphere-problem-detector-operator-xxxxx         Created container vsphere-problem-detector
    16m     Normal    LeaderElection      configmap/vsphere-problem-detector-lock    vsphere-problem-detector-operator-xxxxx became leader

  • 要使用 OpenShift Container Platform Web 控制台查看事件,请导航到 Home Events,然后从 Project 菜单中选择 openshift-cluster-storage-operator

21.8.4. 从 vSphere 问题检测器 Operator 查看日志

在 vSphere 问题检测器 Operator 运行并执行配置检查后,它会创建日志记录,这些记录可以从命令行或 OpenShift Container Platform Web 控制台查看。

流程

  • 要使用命令行查看日志,请运行以下命令:

    $ oc logs deployment/vsphere-problem-detector-operator \
        -n openshift-cluster-storage-operator

    输出示例

    I0108 08:32:28.445696       1 operator.go:209] ClusterInfo passed
    I0108 08:32:28.451029       1 datastore.go:57] CheckStorageClasses checked 1 storage classes, 0 problems found
    I0108 08:32:28.451047       1 operator.go:209] CheckStorageClasses passed
    I0108 08:32:28.452160       1 operator.go:209] CheckDefaultDatastore passed
    I0108 08:32:28.480648       1 operator.go:271] CheckNodeDiskUUID:<host_name> passed
    I0108 08:32:28.480685       1 operator.go:271] CheckNodeProviderID:<host_name> passed

  • 要使用 OpenShift Container Platform Web 控制台查看 Operator 日志,请执行以下步骤:

    1. 导航到 Workloads Pods
    2. Projects 菜单中选择 openshift-cluster-storage-operator
    3. vsphere-problem-detector-operator pod 的链接。
    4. 点击 Pod 详情 页面上的 Logs 选项卡查看日志。

21.8.5. 由 vSphere 问题检测器 Operator 运行的配置检查

下表标识了配置检查是否运行 vSphere 问题检测程序 Operator。有些检查会验证集群的配置。其他检查验证集群中每个节点的配置。

表 21.32. 集群配置检查
名称描述

CheckDefaultDatastore

验证 vSphere 配置中的默认数据存储名称是否足够短,可用于动态置备。

如果这个检查失败,您可以预期如下情况:

  • systemd 将错误记录到日志中,如 Failed to set up mount unit: Invalid argument
  • 如果在虚拟机没有从节点排空所有 pod 的情况下关闭或重新引导虚拟机,systemd 不会卸载卷。

如果这个检查失败,请重新配置 vSphere,其默认数据存储的名称较短。

CheckFolderPermissions

验证列出默认数据存储中卷的权限。创建卷时需要此权限。Operator 通过列出 / 和 / kubevols 目录来验证权限。根目录必须存在。如果检查运行时不存在 /kubevols 目录,则可以接受。如果不存在,当数据存储用于动态置备时 /kubevols 目录会被创建。

如果这个检查失败,请查看 OpenShift Container Platform 安装过程中指定的 vCenter 帐户所需的权限。

CheckStorageClasses

验证以下内容:

  • 这个存储类置备的每个持久性卷的完全限定路径小于 255 个字符。
  • 如果存储类使用存储策略,存储类必须只使用一个策略,且必须定义该策略。

CheckTaskPermissions

验证列出最新任务和数据存储的权限。

ClusterInfo

从 vSphere vCenter 收集集群版本和 UUID。

表 21.33. 节点配置检查
名称描述

CheckNodeDiskUUID

验证所有 vSphere 虚拟机是否都配置了 disk.enableUUID=TRUE

如果这个检查失败,请参阅 如何在 vSphere Red Hat Knowledgebase 解决方案中检查虚拟机的 'disk.EnableUUID' 参数

CheckNodeProviderID

验证所有节点是否都配置了来自 vSphere vCenter 的 ProviderID。当以下命令的输出不包括每个节点的供应商 ID 时,此检查会失败。

$ oc get nodes -o custom-columns=NAME:.metadata.name,PROVIDER_ID:.spec.providerID,UUID:.status.nodeInfo.systemUUID

如果这个检查失败,请参阅 vSphere 产品文档来获取集群中每个节点的供应商 ID 的信息。

CollectNodeESXiVersion

报告运行节点的 ESXi 主机的版本。

CollectNodeHWVersion

报告节点的虚拟机硬件版本。

21.8.6. 关于存储类配置检查

使用 vSphere 存储的持久性卷的名称与数据存储名称和集群 ID 相关。

创建持久性卷时,systemd 为持久性卷创建一个挂载单元。systemd 进程有 255 个字符限制,用于持久性卷的 VDMK 文件的完全限定路径长度。

完全限定路径基于 systemd 和 vSphere 的命名约定。命名惯例使用以下模式:

/var/lib/kubelet/plugins/kubernetes.io/vsphere-volume/mounts/[<datastore>] 00000000-0000-0000-0000-000000000000/<cluster_id>-dynamic-pvc-00000000-0000-0000-0000-000000000000.vmdk
  • 命名惯例需要 255 个字符限制的 205 个字符。
  • 数据存储名称和集群 ID 由部署决定。
  • 数据存储名称和集群 ID 替换为上述模式。然后,路径通过 systemd-escape 命令处理,以转义特殊字符。例如,连字符在转义后使用四个字符。转义的值为 \x2d
  • 在使用 systemd-escape 处理后,确保 systemd 可以访问 VDMK 文件的完全限定路径后,路径的长度必须小于 255 个字符。

21.8.7. vSphere 问题检测器 Operator 的指标

vSphere 问题检测器 Operator 会公开以下指标,供 OpenShift Container Platform 监控堆栈使用。

表 21.34. vSphere 问题检测器 Operator 公开的指标
名称描述

vsphere_cluster_check_total

检查 vSphere 问题检测程序 Operator 是否执行的集群级别的累积数量。这一计数包括成功和失败。

vsphere_cluster_check_errors

检查 vSphere 问题检测程序 Operator 是否执行失败的集群级别数量。例如,1 表示一个集群级别的检查失败。

vsphere_esxi_version_total

具有特定版本的 ESXi 主机数量。请注意,如果主机运行多个节点,则该主机仅计算一次。

vsphere_node_check_total

检查 vSphere 问题检测程序 Operator 是否执行的节点级别的累积数量。这一计数包括成功和失败。

vsphere_node_check_errors

是否执行 vSphere 问题检测程序 Operator 的失败节点级别检查数量。例如,1 表示一个节点级别的检查失败。

vsphere_node_hw_version_total

具有特定硬件版本的 vSphere 节点数。

vsphere_vcenter_info

有关 vSphere vCenter 服务器的信息。

21.8.8. 其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.