CoreOS, maker of the supertiny Linux distribution for running containers and advocate for better container security, is tackling a major container problem: How do we do persistent storage to containerized apps without tying ourselves in knots?
As a solution, CoreOS has proposed Torus, an open source project that provides storage primitives designed for cloud-native apps and can be deployed like a containerized app via Kubernetes.
Everyone into the pool!
In a blog post released today, CoreOS describes how Torus takes a pool of storage and creates multiple interfaces, with network-accessible block-level storage as one of the defaults.
Torus is deployed by Kubernetes, side by side with the apps to which it provides storage, and it uses Kubernetes's Flexvolume plugin to allow dynamic mounting of volumes for nodes in the cluster. This allows, for example, PostgreSQL to run atop Torus storage volumes.
Torus also demonstrates how CoreOS is working on what happens around containers, not only what happens inside them. A key part of Torus is etcd, a distributed key/value store used by CoreOS to automatically keep configuration data consistent across all machines in a cluster. In Torus, etcd is used to store and replicate metadata for all the files and objects stored in the pool.
Easy to be hard
Persistent storage for containerized applications is hard to do right. With conventional attached storage, there's no guarantee of data locality or that the data needed for a given app is near the containers requiring it.
Other vendors have proposed solutions to the same problem. MapR, for instance, provides an option to make its Hadoop-based Converged Data Platform a persistent data store. Cisco wants to solve data locality for containers at the hardware level. But CoreOS's solution is entirely software-based and requires software likely already in use.
CoreOS isn't currently proposing Torus as a full-blown solution, but as a building block from which more robust solutions can eventually be created. Object storage in Torus, for instance, doesn't exist yet, but CoreOS believes Torus' primitives will allow it, among other mechanisms.
Now that container formats and behaviors are more settled, attention is turning to the problems that arise from trying to build large, distributed applications around them. By offering Torus as open source and pairing it with a project that already has momentum (Kubernetes), CoreOS provides a solution that minimizes the number of new technologies users need to bring to the fold. It does justice to the idea that containers were supposed to simplify matters, not complicate them.