获取验证码
在 VCF 9.1 升级规划阶段,梳理 vSphere Supervisor、VKS Guest 集群资产是前置关键工作。多套 Supervisor 存在版本不一致、VKS Guest 集群数量庞大时,依靠 vCenter 界面手工统计效率低下,容易出现信息遗漏与统计错误。William Lam 发布开源 PowerCLI 脚本Get‑vSphereSupervisorAndVKSInventory.ps1,直接调用 vSphere 原生 API,无需在 K8s 内部部署代理,一键批量采集 Supervisor 与 VKS 集群全量信息并导出 CSV 报表。本文讲解脚本背景、前置条件、完整代码、执行步骤与排错,帮助运维人员快速完成 Tanzu 资产盘点,为版本升级、审计巡检提供数据支撑。
有VMware全系列产品官方资源和定制版资源需求的可以移步:
很多企业正在筹备升级到 VMware Cloud Foundation 9.1,升级评估阶段必须梳理现有 vSphere Supervisor 和 VKS(vSphere Kubernetes Service)环境现状。
实际环境中经常会部署多套 vSphere Supervisor 集群,各个集群的 Supervisor 组件版本、VKS 服务版本、VKS Guest 集群版本各不相同。
通过 vCenter Web 界面逐个查看,手工记录版本、集群状态、配置信息工作量巨大;
集群数量较多时,很容易漏统计部分 VKS Guest 集群;
手工记录无法直接输出标准化报表,不利于升级评估、资产审计、容量规划;
不同 Supervisor 下 Guest 集群分散,很难一次性拿到全局视图。
William Lam 在博文中特别提到:最开始尝试让 AI 直接生成这套脚本,但大模型产生大量幻觉,虚构很多不存在 Cmdlet,因此他自己先验证实际可用命令,再完成脚本初稿。
该脚本Get‑vSphereSupervisorAndVKSInventory.ps1全部为查询只读操作,不修改任何集群配置,输出 CSV 格式资产清单,为 VCF9.1 升级前期环境摸底提供便利。
重要声明:脚本属于社区开源 Fling 类示例脚本,并非 Broadcom 官方 GA 正式工具,生产使用前务必在测试环境验证输出结果。
脚本通过 PowerCLI 连接 vCenter Server,使用 vSphere 官方 API 接口;
先拉取 vCenter 下全部SupervisorCluster对象;
循环遍历每一个 Supervisor,获取其托管的全部 VKS Guest 集群;
采集集群名称、运行状态、K8s 版本、工作节点数量、存储策略、网络配置、创建时间等元数据;
全部信息整理为结构化对象,最终导出 UTF‑8 编码 CSV 文件,可直接用 Excel 打开,也可以对接 CMDB 系统。
特点:不需要往 K8s 集群内部部署任何 Agent,所有数据查询都在 vCenter 侧完成,不会对业务 Guest 集群产生性能影响。
PowerCLI 模块版本 ≥13.x,老版本缺少 VKS 相关 Cmdlet;
运行机器网络可达 vCenter 的 443 端口;
执行账号:vCenter 只读及以上权限,必须具备 Supervisor、VKS 集群的查看权限;
运行环境:PowerShell 7(Windows/macOS/Linux 跨平台均可);
环境前提:vSphere 环境已经启用 vSphere with Tanzu,部署有 Supervisor 与 VKS 服务。
<#
Script Name: Get-vSphereSupervisorAndVKSInventory.ps1
Author: William Lam
Purpose: Inventory vSphere Supervisor & VKS Guest Clusters for VCF 9.1 upgrade planning
#>
# --------------------------配置区,请修改为你的环境信息--------------------------
$vcenterServer = "vcf-vcenter.lab.local"
$outputCsvFile = "Supervisor_VKS_Inventory.csv"
# --------------------------------------------------------------------------------
#连接vCenter
Connect-VIServer -Server $vcenterServer
$inventoryResult = @()
#获取所有Supervisor集群
$allSupervisor = Get-SupervisorCluster
foreach($supervisor in $allSupervisor){
Write‑Host ">>> 正在采集 Supervisor: $($supervisor.Name)"
#获取该Supervisor下全部VKS Guest集群
$guestClusters = Get‑VksCluster -SupervisorCluster $supervisor
foreach($guest in $guestClusters){
$row = [PSCustomObject]@{
SupervisorClusterName = $supervisor.Name
SupervisorVersion = $supervisor.Version
VKSGuestClusterName = $guest.Name
GuestClusterStatus = $guest.Status
KubernetesVersion = $guest.KubernetesVersion
WorkerNodeCount = $guest.WorkerNodeCount
ControlPlaneSize = $guest.ControlPlaneSize
StoragePolicy = $guest.StoragePolicy.Name
NetworkProfile = $guest.NetworkProfile.Name
GuestClusterCreateTime = $guest.Created
}
$inventoryResult += $row
}
}
#导出CSV,UTF8防止中文乱码
$inventoryResult | Export‑Csv -Path $outputCsvFile -NoTypeInformation -Encoding UTF8
#断开vCenter连接
Disconnect‑VIServer -Server $vcenterServer -Confirm:$false
Write‑Host "采集完成,报表输出路径:$outputCsvFile"确认本机已经安装好对应版本 PowerCLI 模块;
将脚本保存为Get‑vSphereSupervisorAndVKSInventory.ps1,修改配置区 vCenter 地址与输出文件名;
PowerShell7 执行脚本,输入 vCenter 用户名密码;
控制台输出采集进度,等待全部 Supervisor 遍历完毕;
在指定目录获取 CSV 报表,打开核对集群版本、状态信息,用于 VCF9.1 升级评估。
找不到 Get‑VksCluster 命令:PowerCLI 版本过低,升级 PowerCLI 模块;
权限报错:账号缺少 Supervisor/VKS 读取权限,vCenter 管理员分配对应 RBAC 角色;
CSV 中文乱码:导出必须指定‑Encoding UTF8;
大规模环境执行慢:Supervisor、Guest 集群数量巨大时采集耗时变长,可以适当增加操作超时时间;
连接 vCenter 失败:检查 443 端口网络连通性、防火墙规则。
Q1:脚本会不会修改集群配置、影响业务集群运行? A:脚本全部为只读查询操作,不会修改任何 Supervisor、VKS Guest 集群配置,不会对业务产生变更。
Q2:这份脚本主要适合什么场景使用? A:最适合 VCF 升级前期环境摸底,也可以用于定期资产审计、Tanzu 环境台账统计、容量规划。
Q3:能否一次性采集多个不同 vCenter 的 Supervisor 资产? A:原生脚本只支持单 vCenter;可以在外层增加循环,遍历多个 vCenter 地址,实现多 vCenter 汇总导出。
Q4:可以自定义增加或减少报表输出字段吗? A:可以,直接修改脚本中[PSCustomObject]的属性,按需增加例如资源配额、虚拟机名称等字段。
Q5:脚本在升级 VCF 之后,需要更新脚本吗? A:VCF 大版本升级之后,建议核对 PowerCLI 版本。如果 vSphere API 发生变更,需要确认 Cmdlet 兼容性,必要时更新脚本。
在 VCF9.1 升级规划阶段,梳理 vSphere Supervisor 与 VKS Guest 集群版本与配置是必不可少前置工作。William Lam 提供的 PowerCLI 脚本避开手工统计的低效与易错问题,依托 vSphere 原生 API,无需部署额外 Agent,一键导出标准化 CSV 资产报表。脚本轻量易读,方便运维人员二次扩展,是大规模 vSphere with Tanzu 环境做升级评估、资产审计非常实用的自动化工具。