先把这次的坑说清楚:一个客户的VCF 9.0.0环境,UI里点升级到9.0.1,任务一跑起来就卡在预检查阶段,报错信息直指“ESXi镜像找不到”。运维同事第一反应是想着去补个vCenter层面的ESXi补丁,实际上完全不是这么回事。VMware Cloud Foundation从9.0.0升到9.0.1,涉及到的ESXi镜像问题本质上属于SDDC Manager的LCM(生命周期管理)bundle选型与depot同步问题。这篇文章就把我在处理这个问题时的整个排查链路、根因定位、手动补救步骤,以及升级完成后的收尾检查完整整理出来,给正在做VCF 9.0.x升级,或者准备做离线升级的同行一个可以直接参考的操作手册。
本文覆盖的内容包括:VCF升级任务中ESXi镜像的定位方式、bundle在depot中的存储逻辑、为什么目标镜像明明“存在”却提示找不到、如何用SDDC Manager的命令行工具把缺失的ESXi镜像手动导入,以及升级完成后的版本校验和遗留文件清理。不管是小白还是已经搞过几次VCF升级的工程师,按这个思路排查,基本能少走一半弯路。
1. 先搞清楚:VCF升级时“ESXi镜像”到底指的是什么
很多第一次做VCF升级的人都会在“ESXi镜像找不到”这个问题上卡住,根本原因不是操作不对,而是对这个概念的理解有偏差。VCF升级和传统意义上的vCenter通过Update Manager打ESXi补丁,完全是两套逻辑。
1.1 LCM机制与bundle的概念
VCF 9.0.1的升级动作,核心是SDDC Manager的LCM服务在驱动。SDDC Manager会先从depot(软件仓库)里拉取升级所需的bundle,bundle里面包含的是一个升级路径上所有组件的更新包,比如vCenter Server、NSX、VCF平台本身的组件,以及最重要的ESXi镜像。这里的“ESXi镜像”不是一个简单的ISO安装包,而是对应某个特定build号的ESXi离线镜像zip包,也就是你在Broadcom支持门户下载的那种“VMware vSphere ESXi Offline Bundle”。
VCF升级时,LCM会根据目标版本解析出一个依赖矩阵:VCF 9.0.1的platform bundle会要求ESXi升级到某一个具体build号。如果depot里没有这个build的ESXi bundle,或者有bundle但build号与VCF 9.0.1期望的不匹配,就会在预检查阶段给出“找不到ESXi镜像”之类的报错。
1.2 在线depot和离线depot的区别
处理这个报错之前,先确认你的环境是哪种depot模式:
- 在线depot:SDDC Manager直接连Broadcom的官方软件仓库,升级时自动同步bundle。这种情况一般不会缺镜像,除非网络代理配置有问题,或者账户凭证过期导致同步中断。
- 离线depot:也就是我这次实际遇到的环境,SDDC Manager通过共享仓库路径(如NFS)或本地目录存放提前下载好的bundle文件。离线模式下,升级前置条件完全依赖手动导入的bundle是否齐全,只要漏下任何一个镜像,预检查就直接失败。
我这次处理的环境就是离线depot。VCF 9.0.0版本刚部署完,bundle仓库里只有当时部署用的ESXi 8.0镜像,9.0.1升级路径所需的ESXi版本还没有下载导入,UI上点升级,预检查一扫描完就报“未在depot中找到匹配的ESXi镜像”。
1.3 升级路径中镜像匹配的底层逻辑
VCF中bundle之间不是简单的“版本号相同就能用”的关系。LCM在匹配时,会检查platform bundle中的esxiImage属性,比如要求ESXi版本为8.0 U3d(build XXXXXXXX)。而depot中已有的ESXi bundle如果build号不一致,哪怕大版本相同,LCM也认为不匹配。
这就
