This article describes how to safely shut down a VCF Management Services deployment and power off the underlying virtual machines. The procedure applies to both the Fleet cluster and Instance clusters that host VCF management components.
The vcf_services_runtime_shutdown.sh script automates the full shutdown sequence via the API (port 5480) on the control plane node.
The script triggers a system-wide shutdown workflow that handles internal dependency ordering, prechecks (including snapshot detection), gracefully scales down workloads, and provisions flags to ensure automatic recovery upon boot.
Use this procedure when you need to:
Warning: This procedure stops all VCF management components running on the platform, including Log Management, Realtime Metrics, VCF Operations Lifecycle and Configuration Management, and others. Notify all dependent systems and end-users before proceeding.
The vcf_services_runtime_shutdown.sh script can be run from any machine that has network access to port 5480 on at least one VCF Services Runtime cluster control plane node.
chmod +x vcf_services_runtime_shutdown.shcurl: Communicates with the APIs on control plane node.jq: Parses JSON API responses.govc: Powers off VMs via vSphere.
Then identify a control plane node of the VCF services runtime as follows, and note down its IP address:
ssh vmware-system-user@<node-ip>sudo -i/etc/kubernetes/admin.conf to a local file called "kubeconfig"Logs all planned actions without executing any shutdown or power-off operations:
./vcf_services_runtime_shutdown.sh --node-ip <NODE_IP> --dry-run --kubeconfig <kubeconfig-file>
Shuts down the system but leaves VMs running. Useful when VMs need to remain accessible, or when vCenter credentials are not available:
./vcf_services_runtime_shutdown.sh --node-ip <NODE_IP> --skip-poweroff --kubeconfig <kubeconfig-file>
Shuts down the system and then powers off VMs automatically. Requires vCenter credentials:
export [email protected] export VCENTER_PASSWORD=<vcenter-password> ./vcf_services_runtime_shutdown.sh --node-ip <NODE_IP> --kubeconfig <kubeconfig-file>
vCenter URL is auto-discovered from the vsp component configuration. Set it manually to override:
export GOVC_URL=https://<vcenter-address>
The script writes timestamped log output to stdout. Each phase is marked with a clear separator:
========================================================== [2026-03-06T10:00:00Z] [STEP] Shutting down VCF Services Runtime system ========================================================== [2026-03-06T10:00:01Z] [INFO] System shutdown task created: task-456 [2026-03-06T10:00:17Z] [INFO] Task task-456 status: Succeeded ...
To monitor in real time and save a log file:
./vcf_services_runtime_shutdown.sh --node-ip <NODE_IP> --kubeconfig <kubeconfig-file> 2>&1 | tee /tmp/vcf_shutdown_$(date +%Y%m%d_%H%M%S).log