vSphere Container Storage Plug-in version 3.3.0 and later supports VMware vSAN Max deployments on vSphere version 8.0 Update 3 and later. vSAN Max is a new storage offering that provides Petabyte scale disaggregated storage for vSphere clusters. vSAN Max is powered by the vSAN Express Storage Architecture, also called ESA. vSAN Max provides an ability to deploy a highly scalable storage cluster that can be used as primary storage for vSphere clusters.

The vSAN Max functionality is licensed separately from existing vSAN editions. For more details on the vSAN Max functionality and the design considerations for sharing remote datastores, see Disaggregated Storage with vSAN Max in the Administering VMware vSAN documentation.

The following illustrates the vSAN Max deployments with vSphere Container Storage Plug-in support.

vSAN MAX configuration with vSphere Container Storage Plug-in

vSphere Container Storage Plug-in with vSAN Max remote datastores has the following limitations:

  • Remote provisioning of CNS persistent volumes is not supported when vSAN Max datastores are shared across vCenter Server instances.
  • vSAN Max clusters acts only as a storage server, and not as a client. Do not deploy Kubernetes worker node VMs on vSAN Max hosts.
  • All objects that comprise a Kubernetes worker node VM must reside on the same datastore when you use vSAN Max deployment. For more information about vSAN Max design considerations, see Sharing Remote vSAN Datastores.

Considerations when Using vSAN Max Storage Clusters and vSphere Container Storage Plug-in

When you use HCI Mesh capabilities with vSphere Container Storage Plug-in, consider the following:

  • If you have a storage policy that is compatible with all vSAN datastores in a vSAN Max deployment, you can use it in StorageClasses in the Kubernetes cluster. However, vSphere Container Storage Plug-in will select a local vSAN datastore or a remote vSAN datastore for volume placement.
  • If there is a difference in data path performance between the two types of datastores, and you want to offer two different SLAs for your applications, you can create two separate policies and storage classes.

    For example, if you have two vSAN clusters and have mounted a remote vSAN Max datastore on one of the clusters, you can create two storage policies per cluster. Assign one storage policy to the local vSAN datastore, and the other one to the remote vSAN Max datastore. Later, create two StorageClass objects in the Kubernetes cluster, one for each policy. This allows you to assign different SLAs for the two datastores.

    Use the following examples to create storage policies for local and remote vSAN clusters.

    • Storage class for a local vSAN cluster:
      kind: StorageClass
      apiVersion: storage.k8s.io/v1
      metadata:
        name: block-volume-local-vsan-cluster
      provisioner: csi.vsphere.vmware.com
      parameters:
        storagepolicyname: "local-vsan-cluster-policy"
    • Storage class for a remote vSAN Max cluster:
      kind: StorageClass
      apiVersion: storage.k8s.io/v1
      metadata:
        name: block-volume-remote-vsan-max-cluster
      provisioner: csi.vsphere.vmware.com
      parameters:
        storagepolicyname: "remote-vsan-max-cluster-policy"