Objective

To understand how vSphere CSI driver works and is being deployed.

vSphere CSI Driver Architecture

vSphere CSI Driver Architecture

vSphere CSI Driver Deployment

vSphere CSI Driver is a Kubernetes Deployment that includes multiple containers and runs on the control plane node.

csi-snapshotter

csi-snapshotter is the sidecar container that watches for VolumeSnapshotContent create/update/delete events. csi-snapshotter works with CSI snapshot controller together implement CSI snapshot function.

See Description and Github for further details.

csi-resizer

csi-resizer is a sidecar container that watches the Kubernetes API server for PersistentVolumeClaim updates and triggers ControllerExpandVolume operation.

See Description and Github for further details.

csi-attacher

csi-attacher is a sidecar container that attaches volumes to nodes by calling ControllerPublish and ControllerUnpublish functions of CSI drivers.

See Description and Github for further details.

csi-provisioner

csi-provisioner is a sidecar container that provisions volumes by calling CreateVolume and DeleteVolume functions of CSI drivers. See Description and Github for further details.

vsphere-syncer

vsphere-syncer is a container with vSphere CSI controller pod that responsible for pushing the PV, PVC and pod metadata to CNS(Cloud Native Storage). See Github for further details.

vsphere-csi-controller

vsphere-csi-controller is the container within vSphere CSI controller that is responsible for volume provisining, attaching and detaching the volume to VMs, mounting, formatting and umounting volumes from the pod within the VM.

See Github for further details.

vSphere CSI Node DaemonSet

vSphere CSI Node is a Kubernetes DaemonSet running on each worker node.

node-driver-registrar

node-driver-registrar is a sidecar container that registers the CSI driver within Kubelet using the kubelet plugin registration machanism so that Kubelets can issue CSI NodeGetInfo, NodeStageVolume, NodePublishVolume calls.

See Description and Github for further details.

vsphere-csi-node

vsphere-csi-node is the container that is responsible for volume provisining, attaching and detaching the volume to VMs, mounting, formatting and umounting volumes from the pod within the VM.

See Github for details.

Snapshot controller

Snapshot controller is responsible for managing snapshot objects and operations across multiple CSI drivers.

snapshot-controller

See Description and Github for further details.

snapshot-validation-webhook

See Description and Githb for further details.

Reference