KV*

KVTools · for VMware admins

An RVTools equivalent for KubeVirt.

I size most migrations from an RVTools export: one workbook, a tab per concern, a row per VM. Once the VMs run on Harvester or OpenShift Virtualization, there is no RVTools to run. KVTools builds the same kind of workbook from a KubeVirt cluster.

Run it

# macOS or Linux, with Homebrew
$ brew install coulof/tap/kvtools
$ kvtools

No Homebrew? Download the archive for your platform from the releases page.

That writes kvtools_<cluster>_<timestamp>.xlsx in the current directory. It needs read access to the cluster and nothing else.

Tab by tab

The names line up on purpose. The contents describe KubeVirt objects, so a datastore becomes a StorageClass and VMware Tools becomes the QEMU guest agent.

RVToolsKVToolsWhat you get
vInfokvInfoPower state, node, guest OS, firmware and boot, TPM, uptime
vCPUkvCPUSockets, cores, threads, CPU model, dedicated placement, NUMA, requests and limits
vMemorykvMemoryGuest RAM, requests, limits, launcher overhead, hugepages
vDiskkvDiskPVCs, DataVolumes, StorageClass, volume mode, bus, CSI driver
vPartitionkvPartitionGuest filesystems, capacity, free %, from the guest agent
vNetworkkvNetworkInterfaces, Multus networks, binding mode, MACs, IPs
vCDkvCDCD-ROMs, ISOs, container disks
vSnapshotkvSnapshotVM and volume snapshots, readiness, age
vToolskvGuestAgentQEMU guest agent status, version, hostname, kernel
vHostkvNodePhysical cores, allocatable, allocated vCPU and RAM, overcommit ratio
vDatastorekvStoragePoolStorageClasses, provisioners, reclaim policy, bound PVC totals
vHealthkvHealth16 rules, below
—kvHardwarePCI passthrough, GPU and vGPU, SR-IOV NICs

The mapping is for people. Tools that parse RVTools exports will not read a KVTools workbook.

Using both during a migration

Run RVTools on the source before the cutover and KVTools on the target after. Put vInfo next to kvInfo and you have a VM-by-VM check that everything arrived, with the same CPU and memory shape.

Then run kvtools health. Migrated VMs often keep vSphere settings that KubeVirt handles differently:

For several clusters, kvtools merge a.xlsx b.xlsx -o all.xlsx builds one workbook.

Questions

Which platforms?

Anything running KubeVirt: Harvester and SUSE Virtualization, OpenShift Virtualization, upstream. Optional CRDs like CDI, snapshots or Multus are skipped if they are missing.

Air-gapped clusters?

Yes. One static binary, no network calls beyond the Kubernetes API.

What about live performance?

That is KVTop, the esxtop side of the family.