SlideShare a Scribd company logo
Solving k8s persistent workloads
using k8s DevOps style
@JeffryMolanus

Date: 31/1/2019

https://openebs.io
About me
MayaData and the OpenEBS project
on premises Google packet.net
MayaOnline
Analytics
Alerting
Compliance
Policies
Declarative Data Plane
A
P
I
Advisory
Chatbot
Resistance Is Futile
• K8s originally based on the original Google Borg paper (2015)

• Omega was an intermediate step

• Containers are the “unit” of management 

• Mostly web based applications 

• Typically the apps where stateless — if you agree there is such a thing

• In its most simplistic form k8s is a control loop that tries to converge to the
desired state based on declarative intent provided by the DevOps persona

• Abstract away underlying compute cluster details and decouple apps from
infra structure: avoid lock-in

• Have developer focus on application deployment and not worry about the
environment it runs in
Borg Schematic
Persistency in Volatile Environnements
• Containers storage is ephemeral; data is only stored during the life time of
the container(s) (fancy word for /tmp)

• This either means that temporary data has no value or it can be regenerated

• Sharing data between containers is also a challenge — need to persist

• In the case of severless — the intermediate state between tasks is ephemeral

• Containers need persistent volumes in order to run state full workloads

• While doing so: abstract away the underlying storage details and decouple
the data from the underlying infra: avoid lock-in

• The “bar” has been set in terms of expectation by the cloud providers i.e PD, EBS

• Volume available at multiple DCs and/or regions and replicated
Data Loss Is Almost Guaranteed
apiVersion: v1
kind: Pod
metadata:
name: test-pd
spec:
containers:
- image: k8s.gcr.io/test-webserver
name: test-container
volumeMounts:
- mountPath: /test-pd
name: test-volume
volumes:
- name: test-volume
hostPath:
# directory location on host
path: /data
Unless…
Use a “Cloud” Disk
apiVersion: v1
kind: Pod
metadata:
name: test-pd
spec:
containers:
- image: k8s.gcr.io/test-webserver
name: test-container
volumeMounts:
- mountPath: /test-pd
name: test-volume
volumes:
- name: test-volume
# This GCE PD must already exist!
gcePersistentDisk:
pdName: my-data-disk
fsType: ext4
Evaluation and Progress
• In both cases we tie ourselves to a particular node — that defeats the agility
found natively in k8s and it failed to abstract away details
• We are cherrypicking pets from our herd
• anti pattern — easy to say and hard to avoid in some cases

• The second example allows us to mount (who?) the PV to different nodes
but requires volumes to be created prior to launching the workload

• Good — not great

• More abstraction through community efforts around persistent volumes
(PV) and persistent volume claims (PVC) 

• Container Storage Interface (CSI) to handle vendor specific needs before, in
example, mounting the volume

• Avoid wild fire of “volume plugins” or “drivers” in k8s main repo
The PV and PVC
kind: PersistentVolume
apiVersion: v1
metadata:
name: task-pv-volume
labels:
type: local
spec:
storageClassName: manual
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/mnt/data"
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: task-pv-claim
spec:
storageClassName: manual
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 3Gi
kind: Pod
apiVersion: v1
metadata:
name: mypod
spec:
containers:
- name: myfrontend
image: nginx
volumeMounts:
- mountPath: "/var/www/html"
name: mypd
volumes:
- name: mypd
persistentVolumeClaim:
claimName: task-pv-claim
Summary So Far
• Register a set of “mountable” things to the cluster (PV)

• Take ownership of a “mountable” thing in the cluster (PVC)

• Refer in the application to the PVC

• Dynamic provisioning; create ad-hoc PVs when claiming something that
does not exist yet

• Remove the need to preallocate them

• The attaching and detaching of volumes to nodes is standardised by means
of CSI which is an RPC interface that handles the details of creating,
attaching, destroying among others

• Vendor specific implementations are hidden from the users
The Basics — Follow the Workload
Node Node
POD
PVC
Problem Solved?
• How does a developer configure the PV such that it exactly has the features
that are required for that particular workload
• Number of replica’s, Compression, Snapshot and clones (opt in/out)
• How do we abstract away differences between storage vendors when
moving to/from private or public cloud?

• Differences in replication approaches — usually not interchangeable 

• Abstract away access protocol and feature mismatch

• Provide cloud native storage type like “look and feel” on premises ? 

• Don't throw away our million dollar existing storage infra

• GKE on premisses, AWS outpost — if you are not going to the cloud it will come to
you, resistance if futile 

• Make data as agile as the applications that they serve
Data Gravity
• As data grows — it has the tendency to pull applications towards it (gravity)

• Everything will evolve around the sun and it dominates the planets

• Latency, throughput, IO blender 

• If the sun goes super nova — all your apps circling it will be gone instantly

• Some solutions involve replicating the sun towards some other location in
the “space time continuum”

• It works — but it exacerbates the problem
Solving k8s persistent workloads using k8s DevOps style
What if….
Storage for containers was itself container native ?
Cloud Native Architecture?
• Applications have changed, and somebody forgot to tell storage
• Cloud native applications are —distributed systems themselves

• Uses a variety of protocols to achieve consensus (Paxos, Gossip, etc)

• Is a distributed storage system still needed?

• Designed to fail and expected to fail

• Across racks, DC’s, regions and providers, physical or virtual

• Scalability batteries included

• HaProxy, Envoy, Nginx

• Datasets of individual containers relativity small in terms of IO and size
• Prefer having a collection of small stars over a big sun?

• The rise of cloud native languages such as Ballerina, Metaparticle etc
HW / Storage Trends
• Hardware trends enforce a change in the way we do things

• 40GbE and 100GbE are ramping up, RDMA capable

• NVMe and NVMe-OF (transport — works on any device)

• Increasing core counts — concurrency primitives built into languages

• Storage limitations bubble up in SW design (infra as code)

• “don’t do this because of that” — “don’t run X while I run my backup”

• Friction between teams creates “shadow it” — the (storage) problems start when
we move back from the dark side of the moon back into the sun
• “We simply use DAS —as nothing is faster then that”

• small stars, that would works — no “enterprise features”?

• “they have to figure that out for themselves”

• Seems like storage is an agility anti-pattern?
HW Trends
The Persona Changed
• Deliver fast and frequently

• Infrastructure as code, declarative
intent, gitOps, chatOps

• K8s as the unified cross cloud
control plane (control loop)

• So what about storage? It has not
changed at all
The Idea
Manifests express intent
stateless
Container 1 Container 2 Container 3
stateful
Data Container Data Container Data Container
Any Server, Any Cloud Any Server, Any Cloud
container(n) container(n) container(n)
container(n) container(n) container(n)
Design Constraints
• Built on top of the substrate of Kubernetes

• That was a bet that turned out to be right

• Not yet another distributed storage system; small is the new big
• Not to be confused with scalable
• One on top of the other, an operational nightmare?

• Per workload: using declarative intent defined by the persona

• Runs in containers for containers — so it needs to run in user space
• Make volumes omnipresent — follow the storage?

• Where is the value? Compute or the data that feeds the compute?

• Not a clustered storage instance rather a cluster of storage instances
Decompose the Data
SAN/NAS Vs. DASCAS
Container Attached Storage
How Does That Look?
Topology Visualisation
Storage as Agile as the Application It Serves
mysql
mysql-vol1-repl-1-
pod
mysql-vol1-repl-2-
pod
mysql-vol1-repl-3-
pod
K8s svc *
mysql-vol1-ctrl
1.2
mysql-vol1-ctrl
1.3
Composable
PV
Ingress
local remote
T(x)
T(x)
T(x)
Egress
compress, encrypt, mirror
Ingress, Egress
PV CAS
? iSCSI
nvmf-tcp
nvmf-rdma
virtio-fam
NBD
iSCSI
NVMe
nvmf-rdma
virtio-fam
AIO
gluster
Custom
Custom
Testing It DevOps Style
CI/CD While Building CAS
• First of all - we needed a tool such that we can inject various storage errors
while the workload is running

• There was no real framework for that yet, so we created one: Litmus
• Chaos engineering and e2e testing for storage (presented at kubecon 2017)

• Hope this works — http://openebs.ci
What We Are Working on
CAS
Casperf Casperf Casperf
50/50 RW
kubectl scale up and down (smoke test)
DB
iSCSI nvmf NBD
Regression Alert
Using Gitlab Runners
• Previous Casperf — needs to pass before we enter this stage

• Runners are deployed across a variety of providers

• Testing the code on GKE, Packet etc

• Runners with certain capabilities are tagged as such

• RNICS — capable of testing NVMeOF—RDMA

• Tests with certain requirements i.e “need RDMA” will be skipped if not available

• Will not complete CI pipeline unless all test ran

• “Play” out more sophisticated scenarios using Litmus that replay workloads
and perform error injection
Raising the Bar — Automated Error Correction
CAS
FIO FIO FIO
replay blk IO pattern of various apps
kubectl scale up and down
DB
Regression
AI/ML
Logs Telemetry
Learn what failure 

impacts app how
Declarative Data Plane
A
P
I
Storage just fades away as concern
Questions?!

More Related Content

What's hot (20)

PPTX
OpenStack: Toward a More Resilient Cloud
Mark Voelker
 
PPTX
Ceph, Xen, and CloudStack: Semper Melior
Patrick McGarry
 
PPTX
How bigtop leveraged docker for build automation and one click hadoop provis...
Evans Ye
 
PPTX
Building clouds with apache cloudstack apache roadshow 2018
ShapeBlue
 
PPTX
OpenStack 101 - All Things Open 2015
Mark Voelker
 
PDF
Interop 2011 - Scaling Platform As A Service
Patrick Chanezon
 
PPTX
Hypervisor "versus" Linux Containers with Docker !
Francisco Gonçalves
 
PDF
Cassandra on Docker
Instaclustr
 
PDF
Datacenter Computing with Apache Mesos - シリコンバレー日本人駐在員Meetup
Paco Nathan
 
PDF
Super Sizing Youtube with Python
didip
 
PDF
Microcontainers, Microservices, Microservers? Less [Linux] is more!
Dermot Bradley
 
PDF
Cassandra and Docker Lessons Learned
DataStax Academy
 
PDF
Intro to Joyent's Manta Object Storage Service
Rod Boothby
 
PDF
OpenNebulaConf2015 1.06 Fermilab Virtual Facility: Data-Intensive Computing i...
OpenNebula Project
 
PDF
M.E.L.I.G. Unikernel and Serverless
QNIB Solutions
 
PDF
Better, Faster, Cheaper Infrastructure: Apache CloudStack and Riak CS
John Burwell
 
PDF
Delivering Infrastructure-as-a-Service with Open Source Software
Mark Hinkle
 
PPTX
BigTop vm and docker provisioner
Evans Ye
 
PDF
How bigtop leveraged docker for build automation and one click hadoop provis...
Evans Ye
 
PDF
Docker and containers : Disrupting the virtual machine(VM)
Rama Krishna B
 
OpenStack: Toward a More Resilient Cloud
Mark Voelker
 
Ceph, Xen, and CloudStack: Semper Melior
Patrick McGarry
 
How bigtop leveraged docker for build automation and one click hadoop provis...
Evans Ye
 
Building clouds with apache cloudstack apache roadshow 2018
ShapeBlue
 
OpenStack 101 - All Things Open 2015
Mark Voelker
 
Interop 2011 - Scaling Platform As A Service
Patrick Chanezon
 
Hypervisor "versus" Linux Containers with Docker !
Francisco Gonçalves
 
Cassandra on Docker
Instaclustr
 
Datacenter Computing with Apache Mesos - シリコンバレー日本人駐在員Meetup
Paco Nathan
 
Super Sizing Youtube with Python
didip
 
Microcontainers, Microservices, Microservers? Less [Linux] is more!
Dermot Bradley
 
Cassandra and Docker Lessons Learned
DataStax Academy
 
Intro to Joyent's Manta Object Storage Service
Rod Boothby
 
OpenNebulaConf2015 1.06 Fermilab Virtual Facility: Data-Intensive Computing i...
OpenNebula Project
 
M.E.L.I.G. Unikernel and Serverless
QNIB Solutions
 
Better, Faster, Cheaper Infrastructure: Apache CloudStack and Riak CS
John Burwell
 
Delivering Infrastructure-as-a-Service with Open Source Software
Mark Hinkle
 
BigTop vm and docker provisioner
Evans Ye
 
How bigtop leveraged docker for build automation and one click hadoop provis...
Evans Ye
 
Docker and containers : Disrupting the virtual machine(VM)
Rama Krishna B
 

Similar to Solving k8s persistent workloads using k8s DevOps style (20)

PDF
Container Attached Storage (CAS) with OpenEBS - Berlin Kubernetes Meetup - Ma...
OpenEBS
 
PDF
MayaData Datastax webinar - Operating Cassandra on Kubernetes with the help ...
MayaData Inc
 
PDF
Container Attached Storage (CAS) with OpenEBS - SDC 2018
OpenEBS
 
PDF
Latest (storage IO) patterns for cloud-native applications
OpenEBS
 
PDF
Persistent Storage with Kubernetes in Production
Cheryl Hung
 
PDF
Persistent Storage with Kubernetes in Production
Cheryl Hung
 
PDF
Persistent Storage with Kubernetes in Production
Cheryl Hung
 
PDF
Persistent Storage with Kubernetes in Production
Cheryl Hung
 
PDF
Kash Kubernetified
Michael Wojcikiewicz
 
PPTX
OpenEBS Technical Workshop - KubeCon San Diego 2019
MayaData Inc
 
PPTX
Robust Applications in Mesos using External Storage
David vonThenen
 
PDF
Think like a storage architect, in four questions
Cheryl Hung
 
PDF
Persistent Storage with Kubernetes in Production
Cheryl Hung
 
PDF
Open ebs 101
LibbySchulze
 
PDF
Persistent Storage with Kubernetes in Production
Cheryl Hung
 
PDF
Introduction to Container Storage
Cheryl Hung
 
PDF
Introduction to Container Storage
Cheryl Hung
 
PDF
DCEU 18: Use Cases and Practical Solutions for Docker Container Storage on Sw...
Docker, Inc.
 
PDF
Persistent storage in Docker
Cheryl Hung
 
PDF
Redis Conf 2019--Container Attached Storage for Redis
OpenEBS
 
Container Attached Storage (CAS) with OpenEBS - Berlin Kubernetes Meetup - Ma...
OpenEBS
 
MayaData Datastax webinar - Operating Cassandra on Kubernetes with the help ...
MayaData Inc
 
Container Attached Storage (CAS) with OpenEBS - SDC 2018
OpenEBS
 
Latest (storage IO) patterns for cloud-native applications
OpenEBS
 
Persistent Storage with Kubernetes in Production
Cheryl Hung
 
Persistent Storage with Kubernetes in Production
Cheryl Hung
 
Persistent Storage with Kubernetes in Production
Cheryl Hung
 
Persistent Storage with Kubernetes in Production
Cheryl Hung
 
Kash Kubernetified
Michael Wojcikiewicz
 
OpenEBS Technical Workshop - KubeCon San Diego 2019
MayaData Inc
 
Robust Applications in Mesos using External Storage
David vonThenen
 
Think like a storage architect, in four questions
Cheryl Hung
 
Persistent Storage with Kubernetes in Production
Cheryl Hung
 
Open ebs 101
LibbySchulze
 
Persistent Storage with Kubernetes in Production
Cheryl Hung
 
Introduction to Container Storage
Cheryl Hung
 
Introduction to Container Storage
Cheryl Hung
 
DCEU 18: Use Cases and Practical Solutions for Docker Container Storage on Sw...
Docker, Inc.
 
Persistent storage in Docker
Cheryl Hung
 
Redis Conf 2019--Container Attached Storage for Redis
OpenEBS
 
Ad

Recently uploaded (20)

PPTX
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
DOCX
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 
PDF
Go Concurrency Real-World Patterns, Pitfalls, and Playground Battles.pdf
Emily Achieng
 
PDF
Future-Proof or Fall Behind? 10 Tech Trends You Can’t Afford to Ignore in 2025
DIGITALCONFEX
 
PPTX
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
PPTX
Future Tech Innovations 2025 – A TechLists Insight
TechLists
 
PDF
“Voice Interfaces on a Budget: Building Real-time Speech Recognition on Low-c...
Edge AI and Vision Alliance
 
PDF
UiPath DevConnect 2025: Agentic Automation Community User Group Meeting
DianaGray10
 
PDF
What’s my job again? Slides from Mark Simos talk at 2025 Tampa BSides
Mark Simos
 
PDF
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
PDF
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
PDF
NLJUG Speaker academy 2025 - first session
Bert Jan Schrijver
 
PDF
“Squinting Vision Pipelines: Detecting and Correcting Errors in Vision Models...
Edge AI and Vision Alliance
 
PPTX
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit Team
 
PDF
Peak of Data & AI Encore AI-Enhanced Workflows for the Real World
Safe Software
 
PDF
ICONIQ State of AI Report 2025 - The Builder's Playbook
Razin Mustafiz
 
PDF
AI Agents in the Cloud: The Rise of Agentic Cloud Architecture
Lilly Gracia
 
PDF
NASA A Researcher’s Guide to International Space Station : Physical Sciences ...
Dr. PANKAJ DHUSSA
 
PDF
Kit-Works Team Study_20250627_한달만에만든사내서비스키링(양다윗).pdf
Wonjun Hwang
 
PDF
“NPU IP Hardware Shaped Through Software and Use-case Analysis,” a Presentati...
Edge AI and Vision Alliance
 
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 
Go Concurrency Real-World Patterns, Pitfalls, and Playground Battles.pdf
Emily Achieng
 
Future-Proof or Fall Behind? 10 Tech Trends You Can’t Afford to Ignore in 2025
DIGITALCONFEX
 
New ThousandEyes Product Innovations: Cisco Live June 2025
ThousandEyes
 
Future Tech Innovations 2025 – A TechLists Insight
TechLists
 
“Voice Interfaces on a Budget: Building Real-time Speech Recognition on Low-c...
Edge AI and Vision Alliance
 
UiPath DevConnect 2025: Agentic Automation Community User Group Meeting
DianaGray10
 
What’s my job again? Slides from Mark Simos talk at 2025 Tampa BSides
Mark Simos
 
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
POV_ Why Enterprises Need to Find Value in ZERO.pdf
darshakparmar
 
NLJUG Speaker academy 2025 - first session
Bert Jan Schrijver
 
“Squinting Vision Pipelines: Detecting and Correcting Errors in Vision Models...
Edge AI and Vision Alliance
 
AI Penetration Testing Essentials: A Cybersecurity Guide for 2025
defencerabbit Team
 
Peak of Data & AI Encore AI-Enhanced Workflows for the Real World
Safe Software
 
ICONIQ State of AI Report 2025 - The Builder's Playbook
Razin Mustafiz
 
AI Agents in the Cloud: The Rise of Agentic Cloud Architecture
Lilly Gracia
 
NASA A Researcher’s Guide to International Space Station : Physical Sciences ...
Dr. PANKAJ DHUSSA
 
Kit-Works Team Study_20250627_한달만에만든사내서비스키링(양다윗).pdf
Wonjun Hwang
 
“NPU IP Hardware Shaped Through Software and Use-case Analysis,” a Presentati...
Edge AI and Vision Alliance
 
Ad

Solving k8s persistent workloads using k8s DevOps style

  • 1. Solving k8s persistent workloads using k8s DevOps style @JeffryMolanus Date: 31/1/2019 https://openebs.io
  • 2. About me MayaData and the OpenEBS project
  • 3. on premises Google packet.net MayaOnline Analytics Alerting Compliance Policies Declarative Data Plane A P I Advisory Chatbot
  • 4. Resistance Is Futile • K8s originally based on the original Google Borg paper (2015) • Omega was an intermediate step • Containers are the “unit” of management • Mostly web based applications • Typically the apps where stateless — if you agree there is such a thing • In its most simplistic form k8s is a control loop that tries to converge to the desired state based on declarative intent provided by the DevOps persona • Abstract away underlying compute cluster details and decouple apps from infra structure: avoid lock-in • Have developer focus on application deployment and not worry about the environment it runs in
  • 6. Persistency in Volatile Environnements • Containers storage is ephemeral; data is only stored during the life time of the container(s) (fancy word for /tmp) • This either means that temporary data has no value or it can be regenerated • Sharing data between containers is also a challenge — need to persist • In the case of severless — the intermediate state between tasks is ephemeral • Containers need persistent volumes in order to run state full workloads • While doing so: abstract away the underlying storage details and decouple the data from the underlying infra: avoid lock-in • The “bar” has been set in terms of expectation by the cloud providers i.e PD, EBS • Volume available at multiple DCs and/or regions and replicated
  • 7. Data Loss Is Almost Guaranteed apiVersion: v1 kind: Pod metadata: name: test-pd spec: containers: - image: k8s.gcr.io/test-webserver name: test-container volumeMounts: - mountPath: /test-pd name: test-volume volumes: - name: test-volume hostPath: # directory location on host path: /data Unless…
  • 8. Use a “Cloud” Disk apiVersion: v1 kind: Pod metadata: name: test-pd spec: containers: - image: k8s.gcr.io/test-webserver name: test-container volumeMounts: - mountPath: /test-pd name: test-volume volumes: - name: test-volume # This GCE PD must already exist! gcePersistentDisk: pdName: my-data-disk fsType: ext4
  • 9. Evaluation and Progress • In both cases we tie ourselves to a particular node — that defeats the agility found natively in k8s and it failed to abstract away details • We are cherrypicking pets from our herd • anti pattern — easy to say and hard to avoid in some cases • The second example allows us to mount (who?) the PV to different nodes but requires volumes to be created prior to launching the workload • Good — not great • More abstraction through community efforts around persistent volumes (PV) and persistent volume claims (PVC) • Container Storage Interface (CSI) to handle vendor specific needs before, in example, mounting the volume • Avoid wild fire of “volume plugins” or “drivers” in k8s main repo
  • 10. The PV and PVC kind: PersistentVolume apiVersion: v1 metadata: name: task-pv-volume labels: type: local spec: storageClassName: manual capacity: storage: 10Gi accessModes: - ReadWriteOnce hostPath: path: "/mnt/data" kind: PersistentVolumeClaim apiVersion: v1 metadata: name: task-pv-claim spec: storageClassName: manual accessModes: - ReadWriteOnce resources: requests: storage: 3Gi kind: Pod apiVersion: v1 metadata: name: mypod spec: containers: - name: myfrontend image: nginx volumeMounts: - mountPath: "/var/www/html" name: mypd volumes: - name: mypd persistentVolumeClaim: claimName: task-pv-claim
  • 11. Summary So Far • Register a set of “mountable” things to the cluster (PV) • Take ownership of a “mountable” thing in the cluster (PVC) • Refer in the application to the PVC • Dynamic provisioning; create ad-hoc PVs when claiming something that does not exist yet • Remove the need to preallocate them • The attaching and detaching of volumes to nodes is standardised by means of CSI which is an RPC interface that handles the details of creating, attaching, destroying among others • Vendor specific implementations are hidden from the users
  • 12. The Basics — Follow the Workload Node Node POD PVC
  • 13. Problem Solved? • How does a developer configure the PV such that it exactly has the features that are required for that particular workload • Number of replica’s, Compression, Snapshot and clones (opt in/out) • How do we abstract away differences between storage vendors when moving to/from private or public cloud? • Differences in replication approaches — usually not interchangeable • Abstract away access protocol and feature mismatch • Provide cloud native storage type like “look and feel” on premises ? • Don't throw away our million dollar existing storage infra • GKE on premisses, AWS outpost — if you are not going to the cloud it will come to you, resistance if futile • Make data as agile as the applications that they serve
  • 14. Data Gravity • As data grows — it has the tendency to pull applications towards it (gravity) • Everything will evolve around the sun and it dominates the planets • Latency, throughput, IO blender • If the sun goes super nova — all your apps circling it will be gone instantly • Some solutions involve replicating the sun towards some other location in the “space time continuum” • It works — but it exacerbates the problem
  • 16. What if…. Storage for containers was itself container native ?
  • 17. Cloud Native Architecture? • Applications have changed, and somebody forgot to tell storage • Cloud native applications are —distributed systems themselves • Uses a variety of protocols to achieve consensus (Paxos, Gossip, etc) • Is a distributed storage system still needed? • Designed to fail and expected to fail • Across racks, DC’s, regions and providers, physical or virtual • Scalability batteries included • HaProxy, Envoy, Nginx • Datasets of individual containers relativity small in terms of IO and size • Prefer having a collection of small stars over a big sun? • The rise of cloud native languages such as Ballerina, Metaparticle etc
  • 18. HW / Storage Trends • Hardware trends enforce a change in the way we do things • 40GbE and 100GbE are ramping up, RDMA capable • NVMe and NVMe-OF (transport — works on any device) • Increasing core counts — concurrency primitives built into languages • Storage limitations bubble up in SW design (infra as code) • “don’t do this because of that” — “don’t run X while I run my backup” • Friction between teams creates “shadow it” — the (storage) problems start when we move back from the dark side of the moon back into the sun • “We simply use DAS —as nothing is faster then that” • small stars, that would works — no “enterprise features”? • “they have to figure that out for themselves” • Seems like storage is an agility anti-pattern?
  • 20. The Persona Changed • Deliver fast and frequently • Infrastructure as code, declarative intent, gitOps, chatOps • K8s as the unified cross cloud control plane (control loop) • So what about storage? It has not changed at all
  • 21. The Idea Manifests express intent stateless Container 1 Container 2 Container 3 stateful Data Container Data Container Data Container Any Server, Any Cloud Any Server, Any Cloud container(n) container(n) container(n) container(n) container(n) container(n)
  • 22. Design Constraints • Built on top of the substrate of Kubernetes • That was a bet that turned out to be right • Not yet another distributed storage system; small is the new big • Not to be confused with scalable • One on top of the other, an operational nightmare? • Per workload: using declarative intent defined by the persona • Runs in containers for containers — so it needs to run in user space • Make volumes omnipresent — follow the storage? • Where is the value? Compute or the data that feeds the compute? • Not a clustered storage instance rather a cluster of storage instances
  • 24. SAN/NAS Vs. DASCAS Container Attached Storage
  • 25. How Does That Look?
  • 27. Storage as Agile as the Application It Serves mysql mysql-vol1-repl-1- pod mysql-vol1-repl-2- pod mysql-vol1-repl-3- pod K8s svc * mysql-vol1-ctrl 1.2 mysql-vol1-ctrl 1.3
  • 29. Ingress, Egress PV CAS ? iSCSI nvmf-tcp nvmf-rdma virtio-fam NBD iSCSI NVMe nvmf-rdma virtio-fam AIO gluster Custom Custom
  • 31. CI/CD While Building CAS • First of all - we needed a tool such that we can inject various storage errors while the workload is running • There was no real framework for that yet, so we created one: Litmus • Chaos engineering and e2e testing for storage (presented at kubecon 2017) • Hope this works — http://openebs.ci
  • 32. What We Are Working on CAS Casperf Casperf Casperf 50/50 RW kubectl scale up and down (smoke test) DB iSCSI nvmf NBD Regression Alert
  • 33. Using Gitlab Runners • Previous Casperf — needs to pass before we enter this stage • Runners are deployed across a variety of providers • Testing the code on GKE, Packet etc • Runners with certain capabilities are tagged as such • RNICS — capable of testing NVMeOF—RDMA • Tests with certain requirements i.e “need RDMA” will be skipped if not available • Will not complete CI pipeline unless all test ran • “Play” out more sophisticated scenarios using Litmus that replay workloads and perform error injection
  • 34. Raising the Bar — Automated Error Correction CAS FIO FIO FIO replay blk IO pattern of various apps kubectl scale up and down DB Regression AI/ML Logs Telemetry Learn what failure impacts app how Declarative Data Plane A P I
  • 35. Storage just fades away as concern