Objective
To understand how vSphere CSI driver works and is being deployed.
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.