Six storage drivers for Kubernetes
All-Occasion Drivers
Originally, container platforms ran without persistent storage, but with users increasingly porting stateful applications to stateless container clusters, a solution for persistent storage was needed so containers could save data in a directory before crashing or stopping. This problem prompted the Container Storage Infrastructure (CSI) in 2019 to standardize a series of APIs that Kubernetes can use to request, modify, delete, and connect storage to one or multiple pods.
Of course, storage vendors also provide CSI drivers that convert Kubernetes CSI API calls for the associated storage. CSI drivers control both legacy hardware storage systems and software-defined storage (SDS). In this article, I look at the most important open source CSI drivers suitable for small and medium-sized Kubernetes installations and specify their areas of application. A complete overview of all currently available Kubernetes CSI drivers is available online [1].
CSI Drivers
A CSI driver that dynamically creates storage to match incoming persistent volume claims (PVCs) must be capable of basic functionality, such as creating or deleting volumes. The driver also must address a number of optional functions (e.g., creating snapshots, clones, and expansions) and different forms of access – for example, Read/Write Single pod (RWS) and Read/Write Multiple pods (RWM), where multiple PODs have simultaneous read/write access to a PV. CSI drivers work with either block or file back ends. In the container itself, both simply appear to be linked subdirectories.
Block storage volumes use a local filesystem such as XFS or ext4, which the Kubernetes node manages and loop
mounts in the container. Block storage PVs are faster, especially for write access, because they use the filesystem cache of the local node but do not support read/write-many access.
Buy this article as PDF
(incl. VAT)