How I Fixed A Failed VCF Managed Services Platform Deployment

TL;DR

Desired vs current state, and both match. The spec asked for 3 control plane nodes and 1 worker, and that’s exactly what was deployed. The question is why it asked for 3.

export KUBECONFIG=/data/vmsp/<runtime-name>.kubeconfig
kubectl get nodes -o wide

If an older runtime with the same FQDN existed before, clean up Fleet first with KB 441333. More on that in part 2.

But the deploy spec in SDDC Manager’s domainmanager.log shows the request was small_ha, which means 3 control plane nodes:

root@photonvm [ ~ ]# export KUBECONFIG=/etc/kubernetes/admin.conf
root@photonvm [ ~ ]# kubectl get pods -A | grep -vE 'Running|Completed'
NAMESPACE NAME READY STATUS RESTARTS AGE
vmsp-platform vsp-install-gozximgflfatpc4pzdtz2dmshq-bootstrap-execute-script-47505123 0/2 Error 0 13h

Identifying The Failing Check

kubectl get kcp,machinedeployments -A

kubectl get kcp machinedeployments showing VMSP desired state of 3 control plane replicas and 1 worker

kubectl get checksets -A -o json | python3 -c 'import sys,json; [print(k, "| failures:", v.get("contiguousFailures"), "|", v.get("lastError","")) for i in json.load(sys.stdin)["items"] for k,v in i.get("status",{}).get("checkStatuses",{}).items() if not v.get("ok")]'

LocalProcess INFO: 2026-10-14 09:40:00 - >>> HEALTH0002 - VCF services runtime cluster synthetic checks validation
LocalProcess INFO: 2026-10-14 09:48:28 - ERR:HEALTH0002 - VCF services runtime cluster synthetic checks validation
LocalProcess ERROR: 2026-10-14 09:50:17 - 2026/10/14 09:50:17 install task error message: [com.vmware.vcfms.bootstrap.GenericError] Bootstrap failed during stage 'HEALTH0002 - VCF services runtime cluster synthetic checks validation': Synthetic checks failed.. Please retry the operation or contact support if the issue persists. [VCFMS-BOOTSTRAP-999]

Troubleshooting The Bootstrap VM

Command 1: save the failed installer pod’s log to a file. This finds the pod for you, so it works in any environment:

VMSP bootstrap log showing Synthetic checks failed caused by control-plane-vm-placement anti-affinity check

Verify Nodes On The New VMSP Cluster

First, check the bootstrap VM’s own cluster for anything unhealthy. The installer pod is in an error state:

P=$(kubectl get pods -n vmsp-platform -o name | grep bootstrap-execute-script | tail -1); kubectl logs -n vmsp-platform $P --all-containers --timestamps > /root/bootstrap-fail.log 2>&1; wc -l /root/bootstrap-fail.log

Once cleaned up, redeploy from VCF Operations: Build > Lifecycle > select the VCF instance > SDDC Manager Upgrades > Install Components.

zgrep -h '"size":"small_ha"' /var/log/vmware/vcf/domainmanager/domainmanager.log* | grep -oE '"[A-Za-z]+":"[^"]{1,80}"' | sort | uniq -c | sort -rn | head -12
SDDC Manager domainmanager.log showing VCF services runtime deploy spec requested size small_ha

VCF 9.1.1, 2-host management cluster. Redeploying the VCF Management Services Platform (VMSP), shown in the UI as VCF services runtime, kept failing at HEALTH0002 … Synthetic checks failed [VCFMS-BOOTSTRAP-999]. The real cause was a single anti-affinity check. I had picked Small (High Availability) in the wizard, which builds 3 control plane nodes, and 3 control plane nodes can’t be spread across 2 hosts. Redeploying as Small fixed it.

VMSP synthetic checkset control-plane-vm-placement anti-affinity check failing, noncritical warning, BackoffLimitExceeded

zgrep -h -E 'HEALTH0002|VCFMS-BOOTSTRAP-999' /var/log/vmware/vcf/domainmanager/domainmanager.log* | tail -40