With the release of Kubernetes 1.13, Container Storage Interface (CSI) 1.0 was released. Hitachi is among the early adopters of CSI where a CSI plugin was released in January 2019. This article introduces the benefits of adopting CSI and the Hitachi Storage Plugin for Containers (HSPC).
What is CSI?
The CSI specification emerged from cooperation between community members from various container orchestration systems (CO systems) – including Kubernetes, Mesos, Docker, and Cloud Foundry. This standard API enables container users to control storage of various vendors from container orchestration systems.
Following the arrival of Docker in 2013, many container orchestration tools such as Kubernetes, Mesos, and Docker Swarm have been released as tools for managing container environments. However, since the management interface for storage is different for each container orchestrator, it was necessary for storage vendors or system integrators to develop multiple drivers according to the specifications of the storage interface provided by each container orchestrator.
Faced with this situation, several container orchestration communities cooperated and formulated a storage management common interface for containers with the aim of making the drivers developed by storage vendors reusable in various orchestrators. This was called CSI. Kubernetes quickly supported CSI with Kubernetes 1.13 released in December 2018, and CSI had become a formal version.
Many container orchestrators are moving to support CSI, which provides the benefit of easily changing the container orchestrator with minimal storage configuration changes as shown in figure above. Since CSI provides common storage functionalities, it provides following benefits:
- Evaluate different container orchestrators easily with common storage infrastructure
- Easily share storage with multiple of different container orchestrators
- Easier to migrate persistent storage to another container orchestrators
Hitachi has been actively involved in container storage solutions. Back in November 2017, Hitachi released first Kubernetes external provisioner Hitachi Storage Plug-in for Containers (HSPC) 1.0.0.
There are two Kubernetes storage-related implementations: "in-tree" and "out-of-tree". In the case of "in-tree", the release timing of the driver must be aligned with Kubernetes for the implementation to be incorporated directly into the Kubernetes core repository. On the other hand, “out-of-tree” is not included in the Kubernetes core repository and can be implemented by storage vendors on their own. It does not have to be synchronized with the Kubernetes release timing. Hitachi uses "out-of-tree" type external provisioner, which has the advantage of enabling storage vendors to quickly provide urgent patches, allowing users to use the newest driver as soon as possible.
After Kubernetes' support for CSI, in January 2019 Hitachi released "HSPC 2.0.0" for CSI. It is also published in the Kubernetes CSI Developer Documentation. HSPC will keep up with CSI community updates and plans to support CSI's new features in a timely manner. Figure below shows release timeline of CSI 1.0 drivers from some other vendors.
HSPC also plans to support CSI's Volume Snapshot & Restore and Raw Block Volume soon.
Hitachi Storage Plug-in for Containers (HSPC) is a Kubernetes-compatible CSI driver that can be used to dynamically provision VSP volumes in a container environment. The driver is deployed as a container for Kubernetes and works just like a regular application. HSPC receives instructions for volume creation from Kubernetes and issues instructions to Hitachi REST API. HSPC provides provisioned VSP volumes to Kubernetes-managed containers and allows those volumes to be managed from Kubernetes.
HSPC makes it possible to fully utilize VSP's high-performance and high-reliability features in a container environment.
Figure below shows an example of a cluster configuration using Kubernetes CSI. HSPC consists of two components: hspc-csi-controller and hspc-csi-node.
The main roles of each component of HSPC are as follows.
|hspc-csi-controller||Responsible for storage operations. This is deployed as StatefulSet with replica 1 and runs only on a master node.|
Primarily manages volumes on each node. This is deployed as a DaemonSet and all nodes are required to have this component.
For more details, please refer to HSPC Quick Reference Guide in Containers - Hitachi Vantara Knowledge.
With the emergence of CSI, storage vendors can develop a single volume driver to support various container orchestrator systems such as Kubernetes and Mesos. This enables the container environment user to choose a container orchestrator, and also allows the user to utilize storage with common functionality and usability across all container orchestrator systems.
In January 2019, Hitachi released the CSI driver "Hitachi Storage Plug-in for Containers 2.0.0" supporting the Hitachi VSP series. This brings VSP's high-performance, high-reliability features in container environments.