A Deeper Dive into VAST CSI Driver

Prev Next

VAST CSI deployment has two components:

  • A controller pod that is responsible for creating and deleting volumes.

  • A node pod responsible for creating the mount on the node (host) it is running on. The node pod contains VAST CSI Driver that invokes mount and umount commands.

    A node gets all necessary information about existing virtual IP pools and views from the controller. It does not communicate with the VAST Management Service (VMS) directly. The only exception to this is for handling Ephemeral Volumes, where the node pod handles the entire volume lifecycle.

The operation sequence is as follows:

  1. An application makes a Persistent Volume Claim (PVC), which indirectly references the storage class which, in turn, references the dynamic provisioner for VAST Cluster via CSI.

  2. The CSI receives the request to create a persistent volume. Based on the NFS configuration information provided via the storage class, it creates a VAST Cluster view and a directory on the VAST cluster (named for the persistent volume) and informs Kubernetes that the volume has been created.

  3. Kubernetes allocates the logical persistent volume which references the VAST Cluster directory. At this point, you can see the directory by listing the view on the VAST cluster.

  4. Kubernetes begins the application launch sequence and recognizes that the application referenced a PVC.

  5. Kubernetes asks the VAST CSI controller to publish the volume to the node where the application is to run.

  6. The VAST CSI controller gets the API request and allocates one of the VAST Cluster's virtual IPs to the node.

    Note that each volume will get a single virtual IP on each node. Multiple volumes on the same node or the same volume on different nodes will likely get different virtual IPs for proper load spreading across volumes and nodes.

  7. Kubernetes asks VAST CSI Driver on the node to mount the volume, making it available for the application.

  8. Kubernetes causes the application within the pod to start.

  9. The application can create a file in what appears to be a local directory within its container, but actually points to a directory on the VAST cluster (the directory being the persistent volume).