Virtual machine classes must be associated with the vSphere Namespace where you are provisioning TKG Service clusters.

Virtual Machine Class Binding Error

If you attempt to provision a TKGS cluster using one or more VM classes that you have not added to the target vSphere Namespace, you receive the error VirtualMachineClassBindingNotFound, an example of which is shown below.
conditions:
  - lastTransitionTime: "2021-04-25T02:50:58Z"
    message: 1 of 2 completed
    reason: VirtualMachineClassBindingNotFound @ Machine/test-cluster
    severity: Error
    status: "False"
    type: ControlPlaneReady
  - lastTransitionTime: "2021-04-25T02:49:21Z"
    message: 0/1 Control Plane Node(s) healthy. 0/2 Worker Node(s) healthy
    reason: WaitingForNodesHealthy
    severity: Info
    status: "False"
    type: NodesHealthy

To correct the error, configure the vSphere Namespace with the VM classes you want to use for your TKG Service cluster. Run the command kubectl get virtualmachineclass to view the VM classes that are associated with the vSphere Namespace.

Note: The command kubectl get virtualmachineclassbindings is deprecated as of vSphere 8 U3. The correct command to use is virtualmachineclass.
Warning: The command kubectl get virtualmachineclasses returns all VM classes available on Supervisor. However, because you can use only those VM classes that are associated with the target vSphere Namespace to provision a cluster, the plural version of the noun is informational-only and cannot be relied on when provisioning.