This issue occurs when converting a single-site cluster to a stretched cluster.
If the cluster was previously used as a dHCI server cluster, certain metadata objects (such as fcd, catalog, and .vSphere-HA) are created.
The Elastic Policy mechanism selects the first host in the CMMDS host entry (sorted by UUID) to set the optimal policy for these objects (based on the number of fault domains within the cluster.)
When a user converts a single-site cluster to a stretched cluster, the number of fault domains changes (e.g. from 6 to 3).
Consequentially, any host, including the witness host, can be selected as the first host in the CMMDS entry.
If this happens the witness host lacks the ability to set policies for these objects, resulting in non-compliance of the objects.
For example, if the previous fault domain count was 6, the HFT (Host Failure to Tolerate) for metadata objects could be set to 2.
After conversion, there may not be enough fault domains to support HFT=2, leading to policy non-compliance.
vsphere-9.0.0.0
Steps to workaround this:
1. On vSphere UI, select the cluster which is impacted. Navigate to:
Monitor->vSAN->Virtual Objects.
Three Virtual Objects (Improved virtual disk catalog namespace - catalog, Improved virtual disk namespace - fcd, and vSphere HA metadata object - ..vSphere-HA) may be in "Reduced availability with no rebuild" status.
The UUID (unique identifier) of these objects shows here also.
2. Proceed to reconfigure the policy to make these objects compliant. It can be done by logging-in to any ESXi within the cluster. Run objtool to set the policy of these objects using the following command:
/usr/lib/vmware/osfs/bin/objtool setPolicy -u <uuid in question> -p "((\"hostFailuresToTolerate\" i1) (\"subFailuresToTolerate\" i1))"
This command needs to be run for all affected objects.
3. When the command completes "Object set policy succeeded" can be seen on in the shell output.
In the vSphere-UI, Monitor->vSAN->Virtual Objects page, these objects becomes healthy.