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资源共享交流微信群(请备注加群

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

推荐更多

vCenter 8.0U2 编辑旧硬件版本虚拟机设置失败问题
运维必备

vCenter 8.0U2 编辑旧硬件版本虚拟机设置失败问题

vCenter 8.0U2 编辑旧硬件版本虚拟机设置失败问题。详细解析 vCenter 8.0U2 中无法编辑硬件版本 9 及更低版本虚拟机设置的问题,提供两种临时解决方案和正式修复版本,帮助管理员快速恢复管理功能。 本文针对该问题提供了深度剖析与实测解决方案。

vSphere 8.x 集群所需状态不兼容的 vSwitch0 配置问题
运维必备

vSphere 8.x 集群所需状态不兼容的 vSwitch0 配置问题

vSphere 8.x 集群所需状态不兼容的 vSwitch0 配置问题。详细解析 vSphere 8.x 中集群所需状态配置报告不兼容的原因,重点说明 vSwitch0 bridge/nics configstore 不匹配问题,并提供 fixBridgeNic.py 脚本解决方案,帮助管理员快速恢复合规性。 本文针对该问题提供了深度剖析与实测解决方案。

vSphere 8.x Client 特定操作无响应的浏览器兼容性问题
运维必备

vSphere 8.x Client 特定操作无响应的浏览器兼容性问题

vSphere 8.x Client 特定操作无响应的浏览器兼容性问题。详细解析 vSphere 8.x Client 中某些操作无响应的原因,重点说明浏览器兼容性要求,并提供 PowerCLI 备用方法,帮助管理员快速解决问题。 本文针对该问题提供了深度剖析与实测解决方案。

vCenter vpxd 服务无法启动的 PostgreSQL 日志修复方法
运维必备

vCenter vpxd 服务无法启动的 PostgreSQL 日志修复方法

vCenter vpxd 服务无法启动的 PostgreSQL 日志修复方法。详细解析 vCenter Server 中 vpxd 服务无法启动的原因(PostgreSQL 事务日志损坏),并提供完整的 pg_resetxlog/pg_resetwal 修复步骤,帮助管理员快速恢复 vCenter 服务。 本文针对该问题提供了深度剖析与实测解决方案。

//omg10.com/4/9119499