The latest versions of Kubernetes have a few concepts that help you run stateful apps on Kubernetes:
PersistentVolumes/Volume Claims: provide a method for apps to claim storage provided by the cluster
StatefulSets: an object designed to run stateful apps, which really comes down to being more controlled about how they are started and scaled
Cloud Provider: integration with the cloud provider to auto-create LBs, volumes, etc. DigitalOcean lacks on of these in Kubernetes currently. On AWS for example, the cloud provider will automatically fulfill persistent volume requests with an EBS volume.
If you look at
this example, you can see how all of these come together to run RethinkDB. Without the stable storage provided by the cloud, you can use either host storage, which means your pods will need to be pinned to specific hosts via a label query. I assume this is what you used to do with fleet, as fleet doesn’t have any storage semantics other than mounting host storage. You can also specify a volume to your pods that is a RAM disk and use the clustering in RethinkDB to replicate, but not have it be durable on disk.
tl;dr: having a DO cloud provider would help you out a lot, and it’s being discussed to add one to Kubernetes, in which time we would add it to Tectonic.
- Rob