This talk is on trends for keeping state in clusters of ephemeral containers. Containers are a popular new way to deploy applications. Containers give you benefits like standard container formats, resource isolation, and easy to use deployment tools. However, there are a number of caveats to using containers. One caveat is that many benefits require you to be careful about how you store application state.
Containers are normally managed in such a way that they can be started and stopped easily in order to provide higher availability and better utilize cluster resources. However, this methodoligy has it's tradeoffs. One tradeoff is that each container is generally started in the same state each time. This makes it difficult to save data such as databases or caches in containers.
I will present a number of challenges regarding storing state.
- Allowing data to survive restarts
- Allowing data to be moved between hosts
- Managing storage solutions
I will then present a number of strategies that can be used to meet these challenges.
- Storing data via mounts to the host machine
- Storing data in external services (CloudSQL, RDS, S3, Object Storage, Cloud Datastore, etc.)
- Storing data in cluster native database apps (Cassandra, Riak, etc.)
I will present these strategies in the context of running Kubernetes on OpenStack. Kubernetes is a tool created by Google for managing clusters of containers and has support for OpenStack.
I believe this talk will help attendees visualize how they can map their current problems and workloads to containers. This should make it easier for them to make the leap to using containers for their deployments.