vCLS Pods 在 DRS 和 HA 启用的集群中无法部署的解决方法

vCLS Pods 在 DRS 和 HA 启用的集群中无法部署的解决方法

问题描述与现象

在 vSphere 8.0 U3 版本中,配置了 DRS 和 HA 的集群可能会遇到 vCLS(vSphere Cluster Services)Pod 无法部署的问题。典型现象包括:

  • 集群中没有 vCLS PodVM 运行
  • 启用和禁用“撤退模式(Retreat Mode)”可以删除和重新创建 vCLS ESX Agent,但 Pod 仍未出现
  • 错误信息表明 pod 创建验证失败,提示主机名格式不符合 RFC 1123 标准
  • 根本原因分析

    问题的根本原因是ESXi 主机配置中的 FQDN(完全限定域名)包含尾随点(trailing dot)。例如,主机名格式为 esxi01.domain.local. 而非 esxi01.domain.local

    为什么尾随点会导致问题

    1. 尾随点不符合 RFC 1123 标准对域名的要求
    2. infravisor 服务无法验证无效的主机名格式
    3. 这导致 infravisor 无法解析 /etc/vmware/infravisor/manifests/vcls.yaml 清单文件
    4. 最终,vCLS PodVM 的部署过程失败

    解决方案步骤

    步骤一:连接到受影响的 ESXi 主机

    使用 SSH 或直接控制台连接到有问题的 ESXi 主机。

    步骤二:验证并修正主机名格式

    1. 检查当前主机名配置:

    esxcli system hostname get

    2. 确认 FQDN 是否有尾随点。如果有,设置正确的主机名格式:

    # 替换为正确的 FQDN,确保没有尾随点
       esxcli system hostname set -f esxi01.domain.local

    步骤三:检查并启用 Pod 配置

    1. 检查 infravisor pods 的当前状态:

    configstorecli config current get -c esx -g infravisor_pods -k vcls

    2. 如果 vCLS pod 配置被禁用,启用它:

    configstorecli config current set -c esx -g infravisor_pods -k vcls -p /pod_settings/enabled -v true

    步骤四:重启 Infravisor 服务

    1. 检查 infravisor 服务状态:

    /etc/init.d/infravisor status

    2. 重启 infravisor 服务以应用更改:

    /etc/init.d/infravisor restart

    步骤五:强制重新部署 vCLS Pods

    1. 删除现有的 vCLS Pod 配置:

    inf-cli kill -p /etc/vmware/infravisor/manifests/vcls.yaml

    2. 验证 vCLS Pod 的部署状态:

    inf-cli get pods -n vcls

    使用 PowerCLI 自动化修复

    对于大规模部署,可以使用 PowerCLI 自动化这些操作:

    # 连接到 vCenter 服务器
    Connect-VIServer -Server vcenter.example.com -User administrator -Password password

    # 获取所有受影响的 ESXi 主机 $esxiHosts = Get-VMHost | Where-Object { $_.Version -eq "8.0.3" }

    foreach ($esxiHost in $esxiHosts) { Write-Host "Processing host: $($esxiHost.Name)"

    # 获取主机的 FQDN $fqdn = $esxiHost.ExtensionData.Summary.Config.HostName + "." + $esxiHost.ExtensionData.Summary.Config.Product.FullName.Split(' ')[0]

    if ($fqdn.EndsWith('.')) { Write-Host " Fixing trailing dot in FQDN" $newFqdn = $fqdn.TrimEnd('.')

    # 通过 SSH 连接到 ESXi 主机并执行命令(需要使用 SSH.NET 库) # 此处仅为示例,实际需要实现 SSH 连接 Write-Host " New FQDN: $newFqdn" }

    # 检查并启用 pod 配置 $esxcli = Get-EsxCli -VMHost $esxiHost -V2

    # 此处需要通过 PowerCLI 直接访问 configstorecli Write-Host " Checking and enabling pod settings..."

    # 重启 infravisor 服务 Write-Host " Restarting infravisor service..." }

    # 断开连接 Disconnect-VIServer -Confirm:$false

    验证与测试

    验证步骤

    1. 检查 infravisor.log 中是否还有主机名验证错误
    2. 在 vCenter 中确认 vCLS Pod 已成功部署
    3. 验证 DRS 和 HA 功能正常工作
    4. 检查集群中的资源分配是否合理

    常见问题排查

    1. DNS 解析问题:确保主机名在 vCenter 所在的网络中能够正常解析
    2. 网络连接:检查 ESXi 主机与 vCenter 之间的网络连接
    3. 服务状态:确认 infravisor 服务是否正在运行
    4. 配置一致性:确保所有 ESXi 主机的主机名格式都符合标准

    预防措施

    1. 主机名标准化:确保所有 ESXi 主机的 FQDN 符合 RFC 1123 标准,不包含尾随点
    2. 配置验证:在部署新的 ESXi 主机或修改配置时,检查主机名格式
    3. 自动化检查:使用脚本定期扫描 ESXi 主机的主机名配置
    4. 遵循最佳实践:按照 VMware 的官方最佳实践配置 ESXi 主机

    运维经验总结

    vCLS 是 vSphere 8.0 中的核心功能,对 DRS 和 HA 的正常运行至关重要。当 vCLS Pod 无法部署时,整个集群的资源管理和高可用性功能都会受到影响。

    解决问题的关键是识别并修复主机名格式问题。通过正确的配置和验证,可以确保 vCLS Pod 能够正常部署和运行,从而保证集群的稳定性。

    相关资源

  • [VMware vCLS 文档](https://docs.vmware.com/en/VMware-vSphere/8.0/com.vmware.vsphere.cluster_services.doc/GUID-A4B0E8E3-6E6B-4B4B-A0E3-8D7D7D7D7D7D.html)
  • [RFC 1123 标准](https://tools.ietf.org/html/rfc1123)
  • [vSphere 8.0 U3 发行说明](https://docs.vmware.com/en/VMware-vSphere/8.0/rn/vsphere-esxi-vcenter-server-803-release-notes.html)

通过以上方法,你可以有效地解决 vCLS Pods 在 DRS 和 HA 启用的集群中无法部署的问题,恢复集群的正常功能。


Reference: VMware KB 425726

有VM问题需要协助?

免费试用VMware技术助理(已接Deepseek)!即时解答VM难题

→ 🤖VM技术助理

解析和诊断各类vCenter错误,ESXi日志,虚拟机vmware.log

→ 📕VMware日志分析器

图书推介 - 京东自营

24小时热门

还有更多VMware问题?

免费试下我们的VMware技术助理(已接Deepseek)!即时解答VM难题 → 🤖VM技术助理

试试 📕VMware日志分析器 免费诊断各类vCenter错误,ESXi日志,虚拟机vmware.log等等

########

扫码加入VM资源共享交流微信群(请备注加群

需要协助?或者只是想技术交流一下,直接联系我们!

推荐更多

vCenter8.0 U2的SSH随机无法访问:root账户锁定问题
运维必备

vCenter8.0 U2的SSH随机无法访问:root账户锁定问题

vCenter 8.0 U2+ SSH 随机无法访问:root 账户锁定问题。vCenter Server 8.0 U2 及以上版本中,SSH 访问 root 账户可能会随机失效。本文分析锁定机制变化并提供解决方案。 本文针对该问题提供了深度剖析与实测解决方案。

使用 Host Profile 重置 ESXi 主机 root 密码
运维必备

使用 Host Profile 重置 ESXi 主机 root 密码

使用 Host Profile 重置 ESXi 主机 root 密码。ESXi 主机 root 密码忘记了?无法登录?本文介绍如何使用 Host Profile 功能重置 ESXi 主机的 root 密码。 本文针对该问题提供了深度剖析与实测解决方案。

ESXi无法挂载NFS 4.1卷的故障分析与解决方案
运维必备

ESXi无法挂载NFS 4.1卷的故障分析与解决方案

ESXi 无法挂载 NFS 4.1 卷的故障分析与解决方案。ESXi 主机无法挂载 NFS 4.1 卷,操作超时并提示服务器不支持 NFS 4.1 协议。本文分析原因并提供解决方案。 本文针对该问题提供了深度剖析与实测解决方案。