Volume plugins, by definition, enable the use of external storage with Kubernetes.

Today, Kubernetes offers two approaches for storage integration. The first uses an “in-tree” volume plugin for a platform. The storage interface code is directly embedded into Kubernetes. This is currently used for storage providers such as AWS, GCE, and OpenStack. The downside is that plugin velocity (the speed at which a plugin can be added, enhanced, or patched) is gated by the Kubernetes release cycle.

The second more open approach is to leverage the FlexVolume volume plugin. This plugin uses externally installed and managed software to handle basic Attach/Detach/Mount/Unmount storage operations.

REX-Ray and libStorage

REX-Ray is an open source, storage management solution designed to enable running stateful applications, such as databases, inside a container. REX-Ray uses the concept of a volume mount to persist and maintain an application’s data after the life cycle of the container has ended.  By enabling storage to be hosted externally to the container host, a volume mount also offers improved scale and availability.

REX-Ray dates back to the original Docker Volume driver which originated as an experimental feature in 2015. Over the past several years, REX-Ray has grown and continues to be a preferred choice for attaching storage to containers. REX-Ray’s goal is not limited to Docker containers, but to operate in a broader context to deliver full storage volume life cycle management and governance to all major container platforms, including Kubernetes.  

REX-Ray is built on top of the libStorage framework. This framework architecture allows flexible deployment. It can be deployed in a distributed architecture, centralized for easier management at large scale, or even embedded internally within a storage platform.

The combination of REX-Ray and Kubernetes – What’s the big deal?

As an established volume mount enabler, REX-Ray brings support for a number of popular storage providers. Kubernetes itself already has a number of storage providers, but combining REX-Ray with Kubernetes enables some platforms that were previously unavailable.

FlexREX is an implementation of a FlexVolume driver that acts as a portal to the entire library of REX-Ray/libStorage supported storage platforms. This is in addition to direct support of Docker and Mesos making REX-Ray a single tool that supports many container platforms with one common tool and experience.

The big news here is that FlexREX brings support for a few key storage platforms that are well suited to a Kubernetes deployment such as DellEMC ScaleIO. Furthermore, there is no limitation to the storage drivers supported with FlexREX and new drivers continue to be added by the day.

So how do I get started?

Installation takes just a few steps:

  1. Deploy a REX-Ray controller in the form of a Docker image that runs in a Kubernetes pod.
  2. Install the FlexREX plugin on your Kubernetes minion nodes.

Interested in giving it a try? The entire process is available in the {code} Labs! Let us know what you think

The future

The Kubernetes Storage SIG is currently planning updates to FlexVolume, in addition to a new full-featured solution for out-of-tree storage plugins. The {code} team is a very active participant in this project – expect news on this throughout the year. We are building things now!