In addition to our Kubernetes environment, we also need a CSI plug-in to complete our automation journey. CSI plug-ins are a Kubernetes defined standard that Dell EMC and others use to expose block and file storage to container orchestration systems. CSI plug-ins unify storage management across many container orchestration systems, including Mesos, Docker Swarm, and Kubernetes.
The XtremIO X2 CSI plug-in for Kubernetes provides the following orchestration capabilities:
$ git clone https://github.com/dell/csi-xtremio-deploy.git
$ ./install -csi-plugin.sh -c
and on all other nodes in the cluster:
$ ./install -csi-plugin.sh -n
The XtremIO X2 storage array is then available in Kubernetes. The following figure shows the kubectl get pods –all-namespaces output when the CSI plug-in is running on all Kubernetes worker nodes:
Figure 6. XtremIO X2 CSI plug-in running on Kubernetes worker nodes
The XtremIO X2 array uses intelligent placement for volumes that are provisioned by the XtremIO X2 CSI plug-in. An XtremIO X2 storage environment can support up to four clusters with a single management interface, the XtremIO Management Service (XMS). By default, persistent volumes that are created with the CSI plug-in are placed on the cluster that has the freest capacity as determined by the XMS. This intelligent placement of volumes by the XMS server means that the array is automatically load-balanced. Alternatively, you can explicitly select the cluster for a Kubernetes storage class by specifying the cluster ID.
The following figure shows a multicluster configuration in the XMS interface:
Figure 7. XtremIO X2 multicluster configuration
To use XtremIO Virtual Copies, the Kubernetes administrator must specify a Snapshot Class as a provisioner and then create a VolumeSnapshot YAML file. This process enables the developer to take a snapshot of the database to a persistent volume.
The Docker administrator creates a basic VolumeSnapshot YAML file as follows:
We have uploaded the following YAML file to GitHub as an example for customers:
Figure 8. Kubernetes YAML file used to create snapshot