Cisco HyperFlex Container Storage Interface (CSI) for Kubernetes

About Cisco HyperFlex Kubernetes CSI

Cisco HyperFlex Container Storage Interface (CSI) is an out-of-tree container-based Kubernetes storage integration which is deployed and consumed through standard Kubernetes primitives such as Persistent Volume Claims and Storage Classes. Cisco HyperFlex CSI supports the following features:

  • Dynamic creation and deletion of volumes

  • Dynamic volume attach and detach

  • Block access support

  • Clone volume (when source volume is from the same Datastore)

  • PV support with different filesystems (Ext4, Ext3, XFS)

  • Volume space statistics reporting per CSI specs

  • Multi-writer support (ReadWriteMany) for Block Mode only.

  • Kubernetes 1.18, 1.19 support

  • Kubernetes Cluster multitenancy target masking using dedicated initiator group

  • Support for CSI 1.2 Spec APIs

  • Volume resize support for block mode volumes and ext3, ext4, and xfs filesystem volumes. (expansion)

  • CSI Plug-in installation and upgrade through Helm chart

Cisco HyperFlex CSI Components

The Cisco HyperFlex CSI integration is deployed as containers on top of the target Kubernetes cluster. The following diagram shows the different components of the Cisco HyperFlex CSI deployment and how they interact with each other.

Deployment includes the following pods:

csi-attacher-hxcsi

  • Type: StatefulSet

  • Number of Instances: One per Kubernetes Cluster.

  • Purpose: Required by CSI, but not currently used in Cisco deployment.

csi-provisioner-hxcsi

  • Type: StatefulSet

  • Number of Instances: One per Kubernetes Cluster

  • Purpose: Watches Kubernetes Persistent Volume Claim objects and triggers CreateVolume and DeleteVolume operations as part of Kubernetes CSI spec.

csi-nodeplugin-hxcsi

  • Type: DaemonSet

  • Number of Instances: One per Kubernetes Worker Node

  • Purpose: Discovery and formatting of provisioned HyperFlex iSCSI LUNs on Kubernetes worker nodes. Implements NodePublish/NodeUnpublish Volume APIs as part of Kubernetes CSI spec.

csi-resizer-hxcsi

  • Type: StatefulSet

  • Number of Instances: One per Kubernetes Cluster

  • Purpose: Watches Kubernetes Persistent Volume Claim objects and triggers ControllerExpandVolume and NodeExpandVolume operations as part of Kubernetes CSI spec.