GCE Persistent Disks Amazon EBS Local Disks Apache Kafka RabbitMQ Google Cloud Pub/Sub Amazon SQS Amazon S3 Google Cloud Storage (GCS) MinIO What storage should I use? Object Stores SQL Databases NoSQL Databases MySQL PostgreSQL SQL Server Key-value or document based MongoDB Redis Cassandra File Storage Time series Databases Message Queues Block Storage 1 2 3 4 Understand your options Understand your requirements Weigh tradeoffs Make decision
requirements Weigh tradeoffs What does your stateful app need? What kind of data are you storing? Where will you be accessing it? How frequently will you need to access it? What kind of data protection is required? 1 2 3 Make decision 4
requirements Weigh tradeoffs 1 2 3 Make decision 4 “Sprinkling Kubernetes on it” doesn’t magically solve this. You have to do your homework. You have to make a decision about your architecture, based on your needs.
do I integrate my storage with Kubernetes? Without Kubernetes With Kubernetes Swapping storage requires rewrite your app to handle provisioning, attaching, mounting. Swapping storage is as easy as deploying a new CSI Driver and creating a new StorageClass API object.
How does my stateful app use storage? Without Kubernetes With Kubernetes Manual provision, manual attach, manual mount. Automatic (intelligent) provisioning. Intelligent scheduling based on storage. Storage automatically available to correct node and pod. Storage moved along with workload. Portable Kubernetes Storage API -- write once run anywhere