stateful-kubernetes
Tools
HTML
This is a list of resources for all thingz stateful apps and tooling in and for Kubernetes. I did an initial dump of my bookmarks here but would really appreciate it if you heavily PR it, or if you don’t feel comfortable doing this, at least raise an issue for what’s missing. If you send in suggestions or update the resources directly, please also add yourself to the list of contributors using a website, an mail address or a Twitter handle to sign off.
Note: when you read in-tree it means it’s part of the Kubernetes source code, otherwise we call it 3rd-party, that is, using some kind of Kubernetes extensibility mechanism.
Storage
Official Kubernetes docs and specifications.
In-Tree Storage
- Volumes
- Configuring a pod to use a volume
- Persistent Volumes (PVs)
- Configuring a pod to use a PV
- Dynamically provisioning PVs via storage classes
3rd-Party Storage
- Container Storage Interface (CSI)
Blog Posts and Articles
- 01/2019: Highly-Available Stateful Workloads on Kubernetes with SAN storage
- 01/2019: Container Storage Interface (CSI) for Kubernetes GA
- 08/2018: Dynamically Expand Volume with CSI and Kubernetes
- 06/2018: How to write a Container Storage Interface (CSI) plugin
- 04/2018: Container Storage Interface (CSI) for Kubernetes Goes Beta
- 01/2018: Introducing Container Storage Interface (CSI) Alpha for Kubernetes
- 12/2017: Troubleshooting: Unable to mount volumes for pod because “volume is already exclusively attached to one node and can’t be attached to another”
- 12/2017: A Basic Guide to Kubernetes Storage
- 05/2017: Kubernetes: State and Storage
- 10/2016: Dynamic Provisioning and Storage Classes in Kubernetes
Videos and Slide Decks
- HPE Storage for Containers Workshop at KubeCon US 2018: tutorial, slides
- Stateful Applications in Kubernetes: Ready for Production!
- Approaches for duplicating Kubernetes storage with Gluster
- Persistent Storage with Kubernetes in Production – Which Solution and Why?
- Kubernetes Storage Lingo 101 – Saad Ali, Google (Beginner Skill Level)
- Tutorial: Introduction to Stateful Applications on Kubernetes
- Container Engine: Storage Classes & Dynamic Provisioning in Kubernetes
- Using Kubernetes Local Storage for Scale-Out Storage Services
- Intro to Container Storage Interface (CSI)
Projects and Products
-
Public cloud
- Amazon EKS Storage Classes
- Google GKE Storage
- Microsoft Azure AKS Persistent Volumes
-
On-premises and cross-cloud
- CephRBD
- GlusterFS
- MapR Data Fabric for Kubernetes
- OpenEBS
- OpenStack Cinder
- Portworx
- Quobyte
- Rook
- StorageOS
- Stork
- NetApp Trident
- Elastifile
- Openio
- HPE
- Docker FlexVolume driver Dory
-
Chaos Engineering frameworks
- Litmus
- Chaosplatform
Datastores and Operators
Official Kubernetes Docs and Specifications
- StatefulSets
- Run a Single-Instance Stateful Application
- Controller
- Custom Resources
- Extend the Kubernetes API with custom resources
Blog posts and Articles
- 10/2018: KubeDirector: The easy way to run complex stateful applications on Kubernetes
- 09/2018: How to Install Redis Enterprise Clusters Using Operators on OpenShift
- 08/2018: Getting Started with Apache Kafka and Kubernetes
- 08/2018: Getting started with MongoDB Enterprise Operator for Kubernetes
- 06/2018: Kubernetes StatefulSet In Action
- 05/2018: A complete guide to Kubernetes Operator SDK
- 05/2018: Introducing the Operator Framework: Building Apps on Kubernetes
- 05/2018: PostgreSQL Kubernetes: How to run HA Postgres on Kubernetes
- 04/2018: Comparing Kubernetes Operator Pattern with alternatives
- 04/2018: Kubernetes Persistent Volumes with Deployment and StatefulSet
- 04/2018: How to run HA MongoDB on Kubernetes
- 03/2018: Why Kubernetes Operators are a game changer
- 03/2018: Introducing the Oracle MySQL Operator for Kubernetes
- 12/2017: Kubernetes Elasticsearch Operator
- 08/2017: Kubernetes WordPress: How to run HA WordPress on Kubernetes
- 08/2017: MySQL Kubernetes: deploying and running MySQL on Kubernetes using statefulsets and kops
- 03/2017: PostgreSQL Operator for Kubernetes
- 03/2017: A new “Kafka” novel : the OpenShift & Kubernetes deployment
- 03/2017: Rook Operator: First class storage for Kubernetes
- 02/2017: Deploying PostgreSQL Clusters using StatefulSets
- 02/2017: Two days of pain or how I deployed GlusterFS to Kubernetes
- 01/2017: Running MongoDB on Kubernetes with StatefulSets
- 12/2016: Hacker News thread on StatefulSet: Run and Scale Stateful Applications Easily in Kubernetes
- 11/2016: Original CoreOS Operators launch explainer
Videos and Slide Decks
- CI/CD, Kubernetes, and Databases: Better Together [Video, Slides]
- High Availability for Stateful GKE Workloads
- Why You Care About Kubernetes Operators
- A Kubernetes Operator for PostgreSQL – Architecture and Design
- Elasticsearch on Kubernetes
Projects and Products
- Datastores
-
Operators
- KubeDB – Run production-grade databases easily on Kubernetes
- Operator SDK
- Awesome Operators in the Wild
- Kanister – An Operator Focused on App-Level Data Management
- Node Disk Manager for Kubernetes
- Introducing the Confluent Operator: Apache Kafka on Kubernetes Made Simple
- KubeDirector
- The MySQL Operator – creates, configures and manages MySQL clusters running on Kubernetes
Backup and Restore
Official Kubernetes Docs and Specifications
- None yet
Blog Posts and Articles
- 09/2018: How to backup and restore MySQL on Red Hat OpenShift
- 05/2018: Recovering a StatefulSet from AWS EBS Snapshots
Videos and Slide Decks
Projects and Products
Cross-platform
- Kasten’s K10 Platform
- Heptio Ark
- ReShifter
- Stash by AppsCode – Backup your Kubernetes Volumes
Database-specific
- KubeDB – Run production-grade databases easily on Kubernetes
- Kanister – Cross-data service backup and restore
Storage-system specific
- Data Protection for Containers with HPE Nimble Storage: Part I, Backup Part II, Restore
- Portworx PX-Enterprise