Enablement decisions you cannot take back
Five is the number that decides whether your activation runs clean. Not three, which is what almost everyone reserves, because a Supervisor has three control plane virtual machines and three feels like the obvious answer. Broadcom documents a block of five consecutive management addresses: one for each control plane VM, one floating address that moves to whichever control plane VM is currently the etcd leader, and one held in reserve so a failed control plane VM can be replaced without another trip to the address management team. Reserve three, and nothing rejects you at the time. You discover the gap forty minutes later when Config Status has not moved off Configuring and no error has been raised.
Objective 3.4 asks you to create the process of enabling a Supervisor cluster, and the word process is carrying the weight in that sentence. Nobody is checking whether you can find the Get Started button. What is being checked is whether you know which inputs are gathered before the wizard opens, which order they are consumed in, which of them are permanent, and what evidence proves the activation actually succeeded rather than merely finished. A candidate who has only ever clicked through a lab build tends to know the screens and none of the consequences.
Everything downstream inherits this hour. Namespaces inherit the workload network and its address pools. Storage classes inherit the policies you attach. VM classes, content libraries, Supervisor Services and every VKS cluster anyone provisions later all sit inside a boundary you drew during activation. When a workload cluster refuses to come up in Part 20 or Part 30, the honest first question is almost never about the cluster. It is about which Supervisor object was configured wrongly at activation and has been quietly wrong ever since.
One naming note, said once and then left alone. VKS is the product formerly called TKG Service or TKGS, and the rename stopped at the marketing layer. You will see tkg in resource short names, API groups and log paths throughout this procedure, and it does not mean you are looking at a deprecated product. It means the plumbing was never renamed.
| Decision | Where it is set | Changeable after activation | Cost of changing it |
|---|---|---|---|
| Networking stack, VPC or NSX segments or vDS with Avi | vCenter Server and Network page | No | Full redeploy of the Supervisor |
| Zone topology, one zone or three | Supervisor location page | Zones can be added later and assigned to namespaces, but Broadcom documents no conversion of control plane placement | Treat as permanent, decide before you start |
| Control plane size | Advanced Setting page | Scale up only, never down | Rolling replacement upward, redeploy to go smaller |
| Management IP block and floating IP | Management Network page | No, changing control plane and floating IPs is not supported | Full redeploy |
| Load balancer choice | Detected by NSX, or Avi if installed | No, one load balancer per Supervisor | Full redeploy |
| Storage policy for control plane VMs | Supervisor location page | Yes, in Supervisor configuration | Low, storage migration only |
| API server DNS names | Advanced Setting page | Yes, certificate is regenerated | Brief API server disruption |
| VPC connectivity profile and private CIDRs | Workload Network page | Yes, these are NSX project level objects | Moderate, NSX change ticket |
Enablement decision lock table. Print it, fill it in before the wizard opens, and keep it with the build record.
Preflight checks before the wizard opens
Pin your versions first, because half the study material you will find online was written against vSphere with Tanzu on vSphere 8 and the screens have moved.
Now prove the estate rather than assuming it. Four checks catch most of what goes wrong: vCenter build, the target clusters and their zone mapping, at least one storage policy that the control plane VMs can actually land on, and forward DNS for the name you intend to use as the API server address. Read the vCenter password from an environment variable so it never lands in your shell history or a build document.
That last line matters more than it looks. Login to a Supervisor by fully qualified domain name is required to avoid certificate problems, because Server Name Indication is used to present the correct certificate to incoming requests, and the certificate only carries names you declared. On my first run of this build I skipped the API Server DNS Names field on the Advanced Setting page, pointed DNS at the address anyway, and got this on the first login attempt.
Recoverable, because API server DNS names can be edited afterwards and the certificate regenerates. It still cost an API server disruption on a cluster I had just told people was ready, which is a bad first impression to make on a platform team. Type the FQDN into the wizard.
Activation procedure with VCF Networking and VPC
VPC is the recommended workload network for a VCF stack and it is the supported network stack for VCF Automation, so it is the path this series builds on. Three prerequisites gate it: the general Supervisor cluster prerequisites are met, the Centralized Gateway is configured, and Avi is installed if you want it, because NSX falls back to the NSX Edge load balancer when it does not detect Avi.
- Open Supervisor Management from the vCenter home menu and click Get Started.
- vCenter Server and Network page. Select the vCenter system, then select VCF Networking with VPC as the networking stack. This is the single most irreversible click in the whole wizard.
- Supervisor location page. Enter a Supervisor name, tick Enable control plane high availability, choose the data center holding your zones, and select a compatible vSphere Zone. Cluster Deployment places the Supervisor on one Management Zone and gives host level high availability for the control plane. A three zone deployment makes all three mapped vSphere clusters into one Supervisor and puts one control plane VM in each zone, which is cluster level high availability. Control plane HA is mandatory on a three zone activation. One caveat worth memorising: in VCF 9 you cannot select a management network per control plane node in the vSphere UI, because that requires a shared vSphere Distributed Switch, so you must use the API for that case.
- Storage policy. Select the policy for placement of the control plane VMs. On the reference estate this is
vks-silver-default, backed by vSAN. - Management Network page. Choose DHCP or Static. In DHCP mode the floating IP requires a DHCP server that supports client identifiers, because all control plane VMs use stable DHCP client identifiers. In Static mode you enter the block of five addresses, the subnet mask, the gateway, DNS servers, DNS search domains and NTP servers. Changing control plane VM addresses or the floating IP afterwards is not supported.
- Workload Network page. Select the NSX Project, the VPC Connectivity Profile, the Private (VPC) CIDRs from which private subnets are allocated, a DNS server and the NTP servers that NSX Manager uses. Note a VCF 9.0 behaviour change: on a new Supervisor, if the same DNS servers are shared between management and workload networks, control plane DNS lookups route through the management network, where an existing Supervisor keeps routing them through the workload network.
- Advanced Setting page. Set Supervisor Control Plane Size, enter the API Server DNS Names, and use Export Configuration to produce a JSON file of everything you just entered.
- Click Finish. Activation now creates and configures the control plane VMs and the rest of the components. Kubernetes, Velero and VM Service are enabled as part of that process.
Export Configuration is the step people skip and later wish they had not. That JSON file is your only faithful record of what was entered, it can be edited and imported to redeploy the same Supervisor, and it is the fastest way to stamp a second Supervisor with matching settings. Treat it as a build artifact and commit it next to your infrastructure code.
Write out the management block explicitly before you touch step five. Ambiguity here is what produces the forty minute silence.
| Control plane size | CPUs | Memory | Storage | Where it fits |
|---|---|---|---|---|
| Tiny | 2 | 8 GB | 32 GB | Throwaway demos only, you cannot shrink back to it later |
| Small | 4 | 16 GB | 32 GB | Sensible floor for a lab you will keep for the whole exam prep |
| Medium | 8 | 16 GB | 32 GB | Production with a moderate namespace and cluster count |
| Large | 16 | 32 GB | 32 GB | Dense estates, many Supervisor Services and VKS clusters |
Storage is 32 GB at every size, so the only levers are CPU and memory, and both move in one direction.
Verification and what green looks like
A Config Status of Running in the vCenter UI is necessary and not sufficient. Prove it from the client side, using kubectl with the vSphere plugin rather than a raw kubeconfig, because the plugin is what exchanges your vCenter Single Sign On credentials for a token and writes contexts for every namespace your account can see. That token exchange is exactly what breaks when the certificate or the identity provider is wrong, so making it the first verification step tells you two things at once.
Three control plane VMs with UUID style names, plus one agent node per ESX host, is what a healthy single zone activation looks like. On a three zone activation you get the same three control plane nodes, one per zone, and agent nodes from all three clusters. Watch the version strings: control plane nodes report a standard Kubernetes version with a vmware suffix, agent nodes report a Spherelet build, and a mismatch between them is a genuine signal rather than cosmetic noise.
Now the failure you should expect on a freshly activated Supervisor, and the place the tkg naming shows through.
I have watched capable admins raise a support case at this exact line, convinced activation had half failed. It had not. Activation gives you a Supervisor, not a catalogue. Knowing which empty output is normal is a real part of Objective 3.4, because the process does not end at Running and it does not include content library association either.
Rollback paths and enablement failures
Rollback is blunt. Disable Supervisor from the vCenter UI is the only supported way back, and it destroys the control plane VMs, every vSphere Namespace and every workload sitting on them. Nothing about it is a partial undo. This is why the decision lock table matters more than any single command in this Part: the fallback for a wrong permanent choice is a rebuild, and the only cheap moment to catch it is before Finish.
Short of that, activation retries itself. Workload Control Plane on vCenter runs a state machine that keeps reconciling, so fixing the underlying fault often clears the condition without any operator action. Watching that state machine is far more informative than refreshing the UI.
| Symptom | Cause | Remediation |
|---|---|---|
| Config Status stays Configuring past 60 minutes, no error raised | Control plane VMs cannot reach vCenter on the management network | Check routing between the Supervisor management network and vCenter, then let the state machine retry |
| Floating IP never assigned in DHCP mode | DHCP server does not support client identifiers | Redeploy with a static block of five addresses, or fix the DHCP server first |
| x509 SAN mismatch on kubectl vsphere login | FQDN was not entered in API Server DNS Names, so it is absent from the certificate | Add the FQDN in Supervisor configuration and let the certificate regenerate |
| Activation fails on capacity | Control plane size larger than the cluster can place | Add capacity, or activate smaller and scale up later, never plan to scale down |
| Service of type LoadBalancer stays in pending, no external address | Simplified activation with no load balancer present | Add a load balancer to the simplified deployment, which also unlocks vSphere Pods and Supervisor Services |
| PersistentVolumeClaim stays Pending forever | Simplified Supervisor does not support persistent volume provisioning | Move to a full activation, this is not fixable with a storage class |
| kubectl get tkr returns No resources found | Normal, no content library is associated yet | Associate and sync the content library, covered in Part 9 |
| Control plane scale out unavailable | Single control plane VM in a simplified deployment without a load balancer | Add a load balancer, then scale out the control plane |
Activation failure to remediation lookup. Four of these eight are consequences of choosing the simplified flow.
Exam focus for objective 3.4
Objective checkpoint
1. A design calls for a Supervisor with control plane high availability on a static management network. How many management IP addresses must be reserved, and what does each one do?
Answer: Five consecutive addresses. Three for the control plane VMs, one floating address that moves to the control plane VM holding the etcd leader role, one buffer for replacing a failed control plane VM. Reasoning: Broadcom documents the static entry as a block of five, and reserving only three is the most common preflight error on this objective.
2. An administrator activated a Supervisor at Tiny control plane size to conserve lab capacity. Six weeks later the estate has grown and the API server is under pressure. What are the options?
Answer: Scale up to Small, Medium or Large. Scaling back down later is not possible without redeploying the Supervisor. Reasoning: Control plane size scales up only, which makes the initial choice a one way decision even though it appears on a page labelled Advanced Setting.
3. A team used the simplified deployment flow with no load balancer to stand up a Supervisor quickly. They now report that a PersistentVolumeClaim stays Pending and a LoadBalancer Service has no external address. Which of these is fixed by adding a load balancer?
Answer: Only the LoadBalancer Service. Persistent volume provisioning is not supported on a simplified Supervisor at all. Reasoning: Adding a load balancer enables vSphere Pods, Supervisor Services and control plane scale out, but persistent volume provisioning is listed separately as unsupported in that configuration.
Activation call for this estate
Field note, and it is the reason the chart above has an outlined bar. On a customer build I chose DHCP for the management network, because their DHCP estate was well run and the alternative meant waiting two days for a static reservation. Control plane VMs picked up addresses in about nine minutes and I relaxed. Config Status then sat at Configuring for fifty one minutes with no error anywhere in the UI, while wcpsvc.log repeated a single warning about the floating IP every sixty seconds. Their DHCP server did not honour client identifiers. We tore the whole thing down, waited for the static block, and the second attempt reached Running in twenty six minutes. Total loss was two hours and ten minutes plus a change window I could not get back, over a requirement that is one sentence in the documentation.
My pick for the reference estate is a three zone activation on VCF Networking with VPC, control plane HA on, Small control plane size, and a static block of five management addresses with the API server FQDN entered on the Advanced Setting page. Three zones costs about twelve extra minutes of wall clock and buys cluster level high availability for the control plane, which is the cheapest resilience you will ever purchase on this platform. What I would avoid is the advice you will read everywhere, that the simplified deployment flow is a fine way to get moving because you can add a load balancer afterwards. For a study estate it is actively harmful. It gives you VM Service and nothing else, which means vSphere Pods, Supervisor Services and persistent volumes, the subject matter of Objectives 4.3, 4.4 and 4.11, simply do not exist on it. You will build muscle memory for a Supervisor that is not the one being examined. Build the full activation, even if it takes an afternoon.
kubectl vsphere login succeeds by FQDN with certificate verification on, not skipped. kubectl get nodes lists three control plane nodes plus one agent node per ESX host, all Ready. Control plane pods in vmware-system-vmop and the other system namespaces are Running with no restarts. Your exported configuration JSON is committed alongside your infrastructure code. Your decision lock table is filled in and attached to the build record. kubectl get tkr is empty, and you know that is correct.Tonight, in your own lab, do one thing: open Advanced Setting on your existing Supervisor and write down its control plane size, then work out what you would do if it needed to be smaller. If the honest answer is redeploy, you have understood this objective. Readers who want the product level walkthrough beneath the exam view should keep the VKS complete guide open alongside this series, the networking objects behind the VPC fields are covered in the NSX complete guide, and the load balancer sizing that feeds step two lives in Part 11. Part 15 turns to service mesh design on VKS, the last stop in Section 3 before the hands on run of Section 4 begins.
References
- Deploy a Supervisor with NSX VPC, VMware Cloud Foundation 9.0, Broadcom TechDocs
- Limitations of Simplified Supervisor Configurations, VMware Cloud Foundation 9.0, Broadcom TechDocs
- Supervisor Architecture and Deployment Options, VMware Cloud Foundation 9.0, Broadcom TechDocs
- Requirements for Simplified Supervisor Deployment, VMware Cloud Foundation 9.0, Broadcom TechDocs


DrJha