As shared on Twitter/X yesterday, I just learned that we have made it much easier to disable (as well as enable) the vSphere Cluster Services (vCLS) using the vSphere UI and API in the upcoming vSphere 8.0 Update 2 release. vCLS is enabled by default when a new vSphere Cluster is created and is required for vSphere DRS functionality but there may be scenarios where you are not using vSphere DRS or if you need to perform some clean up, one easy way is to simply disable and re-enable the vCLS service
The current method today for disabling vCLS is by putting a vSphere Cluster into what is called Retreat Mode, which involves adding a new vCenter Server Advanced Setting that contains the Managed Object Reference (MoRef ID) of the vSphere Cluster that you wish to disable vCLS on. If that sounds a bit complicated, it certainly can be and this needs to be done for each and every vSphere Cluster that you wish to disable vCLS, which can add an additional operational overhead.
In vSphere 8.0 Update 2, we now have a much simpler way to manage this vCLS configuration in vSphere UI, by using the new vCLS Mode which is defined under a vSphere Cluster located under vSphere Cluster Services->General.
The vCLS simplification extends beyond just a vSphere UI enhancement and it also introduces a new vSphere API property that can be used to easily update the vCLS Mode. A new property called deploymentMode, which accepts two enumerated values SYSTEM_MANAGED or ABSENT to represent whether vCLS is enabled or disabled respectively on a vSphere Cluster. This new deploymentMode property will be part of the SystemVMsConfigSpec object which is then passed to the ReconfigureComputeResource_Task() API and will reconfigure a vSphere Cluster vCLS Mode.
Note: An updated version of PowerCLI that supports vSphere 8.0 Update 2 will be required to access any new vSphere 8.0 Update 2 APIs.
Here is a PowerCLI example demonstrating the retrieval of the current vCLS Mode using this new vSphere API:
$clusterName = "Nested-Cluster" (Get-Cluster $clusterName).ExtensionData.ConfigurationEx.SystemVMsConfig.DeploymentMode
$clusterSystemVMSpec = New-Object VMware.Vim.ClusterSystemVMsConfigSpec # ABSENT = vCLS Disabled # SYSTEM_MANAGED = vCLS Enabled $clusterSystemVMSpec.DeploymentMode = "ABSENT" $clusterSpec = New-Object VMware.Vim.ClusterConfigSpecEx $clusterSpec.SystemVMsConfig = $clusterSystemVMSpec $task = (Get-Cluster $clusterName).ExtensionData.ReconfigureComputeResource_Task($clusterSpec,$true) $task1 = Get-Task -Id ("Task-$($task.value)") $task1 | Wait-Task
One last thing to be aware of when disabling vCLS is that a new vSphere Alarm is generated that states vCLS has been disabled which can be useful for tracking/compliance purposes. This new vCLS alarm can be acknowledge but there is still a secondary issue that will persists when navigating to the summary view of a vSphere Cluster and can not be suppressed or disabled. This vCLS persisted issue is the current existing behavior, so just something to be aware of.