×

关于 vSphere 问题检测器运算符

vSphere 问题检测器运算符检查部署在 vSphere 上的集群是否存在与存储相关的常见安装和错误配置问题。

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

运算符根据以下时间表运行检查

  • 检查每小时运行一次。

  • 如果任何检查失败,运算符将以 1 分钟、2 分钟、4 分钟、8 分钟等间隔再次运行检查。运算符会将间隔加倍,直到最大间隔为 8 小时。

  • 当所有检查都通过时,时间表将返回到每小时间隔。

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

运行 vSphere 问题检测器运算符检查

您可以覆盖运行 vSphere 问题检测器运算符检查的时间表并立即运行检查。

vSphere 问题检测器运算符每小时自动运行检查。但是,当运算符启动时,它会立即运行检查。集群存储运算符在启动并确定集群在 vSphere 上运行时启动该运算符。要立即运行检查,您可以将 vSphere 问题检测器运算符缩放到 `0`,然后缩放到 `1`,以便它重新启动 vSphere 问题检测器运算符。

先决条件
  • 作为具有 `cluster-admin` 角色的用户访问集群。

步骤
  • 将运算符缩放到 `0`

    $ oc scale deployment/vsphere-problem-detector-operator --replicas=0 \
        -n openshift-cluster-storage-operator
验证
  • 通过运行以下命令验证 Pod 是否已重新启动

    $ oc -n openshift-cluster-storage-operator get pod -l name=vsphere-problem-detector-operator -w
    示例输出
    NAME                                                 READY   STATUS    RESTARTS   AGE
    vsphere-problem-detector-operator-77486bd645-9ntpb   1/1     Running   0          11s

    `AGE` 字段必须指示 Pod 已重新启动。

查看 vSphere 问题检测器运算符的事件

vSphere 问题检测器运算符运行并执行配置检查后,它会创建可以从命令行或 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 控制台查看事件,请导航到**主页**→**事件**,然后从**项目**菜单中选择 `openshift-cluster-storage-operator`。

查看 vSphere 问题检测器运算符的日志

vSphere 问题检测器运算符运行并执行配置检查后,它会创建可以从命令行或 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 控制台查看运算符日志,请执行以下步骤

    1. 导航到**工作负载**→**Pod**。

    2. 从**项目**菜单中选择 `openshift-cluster-storage-operator`。

    3. 单击 `vsphere-problem-detector-operator` Pod 的链接。

    4. 单击**Pod 详情**页面上的**日志**选项卡以查看日志。

vSphere 问题检测器运算符运行的配置检查

下表标识 vSphere 问题检测器运算符运行的配置检查。某些检查会验证集群的配置。其他检查会验证集群中每个节点的配置。

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

CheckDefaultDatastore

验证 vSphere 配置中的默认数据存储名称是否足够短,以便与动态配置一起使用。

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

  • systemd 将错误日志记录到日志中,例如 Failed to set up mount unit: Invalid argument

  • 如果虚拟机在所有 Pod 都没有从节点中移除的情况下关闭或重启,systemd 不会卸载卷。

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

CheckFolderPermissions

验证列出默认数据存储中卷的权限。此权限是创建卷所必需的。操作员通过列出 //kubevols 目录来验证权限。根目录必须存在。如果检查运行时 /kubevols 目录不存在,则可以接受。如果该目录尚不存在,则在使用动态配置的数据存储时会创建 /kubevols 目录。

如果此检查失败,请查看在 OpenShift Container Platform 安装期间指定的 vCenter 帐户所需的权限。

CheckStorageClasses

验证以下内容:

  • 由该存储类配置的每个持久卷的完全限定路径少于 255 个字符。

  • 如果存储类使用存储策略,则存储类必须仅使用一个策略,并且该策略必须已定义。

CheckTaskPermissions

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

ClusterInfo

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

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

CheckNodeDiskUUID

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

如果此检查失败,请参阅 如何在 vSphere 中检查虚拟机的“disk.EnableUUID”参数 Red Hat 知识库解决方案。

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

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

关于存储类配置检查

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

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

完全限定路径基于 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 个字符。

vSphere 问题检测器操作员的指标

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

表 3. vSphere 问题检测器操作员公开的指标
名称 描述

vsphere_cluster_check_total

vSphere 问题检测器操作员执行的集群级检查的累积数量。此计数包括成功和失败。

vsphere_cluster_check_errors

vSphere 问题检测器操作员执行的失败集群级检查的数量。例如,值 1 表示一个集群级检查失败。

vsphere_esxi_version_total

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

vsphere_node_check_total

vSphere 问题检测器操作员执行的节点级检查的累积数量。此计数包括成功和失败。

vsphere_node_check_errors

vSphere 问题检测器操作员执行的失败节点级检查的数量。例如,值 1 表示一个节点级检查失败。

vsphere_node_hw_version_total

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

vsphere_vcenter_info

关于 vSphere vCenter Server 的信息。

其他资源