containerized storage for containers: why, what and how openebs works

23
Containerized Storage for Containers Kubernetes LA Meetup July 18, 2017 @OpenEBS Evan Powell - @epowell101

Upload: matt-b

Post on 21-Jan-2018

203 views

Category:

Internet


2 download

TRANSCRIPT

Page 1: Containerized Storage for Containers:  Why, What and How OpenEBS Works

Containerized Storage for Containers

Kubernetes LA Meetup July 18, 2017@OpenEBSEvan Powell - @epowell101

Page 2: Containerized Storage for Containers:  Why, What and How OpenEBS Works

Who?

Team of storage and DevOps engineers with a 5 year track record of delivering containerized storage (built on jails) to NTT, eSilicon, TCS and other service providers.

CloudByte is the pre-existing SDS brand.

Evan Powell, CEODirector of Ops & BD who started founding companies back in 2000 and is still at it. Also an investor and advisor and friend to enterprise focused entrepreneurs.

Joined as CloudByte / Open EBS CEO 7/1/17

Page 3: Containerized Storage for Containers:  Why, What and How OpenEBS Works

What if storage for container native applications was itself container native?

Page 4: Containerized Storage for Containers:  Why, What and How OpenEBS Works

✓ Intent inherited ✓ Scale w/o bottlenecks

✓ No special skills needed ✓ Granularity

✓ Resiliency ✓ Inate multitenancy

✓ Multi-cloud portability ✓ Smaller “blast radius”

Page 5: Containerized Storage for Containers:  Why, What and How OpenEBS Works

Manifests express intent

K8S used with special care for apps requiring persistence because they require brittle tight coupling.

Hard wired connections via plug-in“IO Blender”

Container 1(Node1)

Container 2(Node 2)

Container 3(Node 3)

stateless stateful

Stateful still too difficult

Container 1 Container 2 Container 3

Container 1 Container 2 Container 3

NAS SAN S3 NAS Cloud

Any Server, Any Cloud

Page 6: Containerized Storage for Containers:  Why, What and How OpenEBS Works

Manifests express intent

stateless

✓ Intent inherited

Container 1 Container 2 Container 3

Container 1 Container 2 Container 3

Container 1 Container 2 Container 3

stateful

No changes to DevOps workflow even for containers requiring persistence. Users manifest their intent and the storage and storage controllers adjust automatically as needed.

Data Container Data Container Data Container

Containerized storage for containersAny Server, Any Cloud Any Server, Any Cloud

Page 7: Containerized Storage for Containers:  Why, What and How OpenEBS Works

✓ Same workflow, same tools, same experts

Volumes

Provisioners

PVC/PV

StorageClasses

Attach/Detach Controllers

CNCF/CSI

Container 1 Container 2 Container 3

Data Container Data Container Data Container

stateful

Containerized storage for containers

Dynamic Provisioning

High Availability

Data Protection

Storage Silos, Kubernetes Managed

Vendor Lock-in, Cross cloud

Slow Upgrades, Seamless Upgrades

Monolithic!, MicroservicesAny Server, Any Cloud

Page 8: Containerized Storage for Containers:  Why, What and How OpenEBS Works

Storage Orchestration - K8s Vs OpenEBS

Functionality K8s OpenEBS

Volume Life-cycle - provisioning, attaching/detach, de-provisioning X

Monitoring the volume data X

Scheduling the volume provisioning intelligently X

Smart space management X

Availability of volume X

Application aware backup/snapshots X

QoS guarantee (latency guarantee) X

Smart movement of the volumes across racks and regions X

Cataloging of storage requirements for different applications X

K8s takes care of connecting applications to stateful storage. OpenEBS answers the other persistent storage questions

Page 9: Containerized Storage for Containers:  Why, What and How OpenEBS Works

Storage just fades away as a concern

Page 10: Containerized Storage for Containers:  Why, What and How OpenEBS Works

How is OpenEBS built ?

Storage containerization

Storage orchestration

Deep storage operations

Core Storage features

is built using

is integrated with

is built into (OpenEBS “Maya”)

is built into (OpenEBS)

(Control plane)Smart Capacity Management Volume Latency Monitoring and Auto-healingAdapt to varying workloads - Application Aware Storage (Pods)AWS EBS Like APIsStorage Analytics

(Data Plane)Containerized volumesThin and scalable block storageEnterprise HA Intelligent QoSSmart Tiering for higher performance

Page 11: Containerized Storage for Containers:  Why, What and How OpenEBS Works

Why move the data & configs next to the app?Today’s scale out storage systems are almost infinitely configurable. Matching their configurations to static workloads is difficult. In a world of dynamic, ever evolving workloads due to micro-services and multi-cloud deployments, it is not a tractable problem for humans.

Let’s say you want to benchmark for your workload:

Source: Alex Aizman’s blog: https://storagetarget.com/author/alexaizman/

Page 12: Containerized Storage for Containers:  Why, What and How OpenEBS Works

Why move the data & configs next to the app?Today’s scale out storage systems are almost infinitely configurable. Matching their configurations to static workloads is difficult. In a world of dynamic, ever evolving workloads due to micro services and multi-cloud deployments, it is not a tractable problem for humans.

Let’s say you want to benchmark for your workload:

Duration of run ~6,700 yearsSource: Alex Aizman’s blog: https://storagetarget.com/author/alexaizman/

Page 13: Containerized Storage for Containers:  Why, What and How OpenEBS Works

More benefits of Cloud Native approach

OpenEBS always available multi-cloud block services are delivered via containerized microservices

Granularity: Each pod has its own block protocol stack, tiering engine, QoS engine and more. SLAs per POD.

Performance & efficiency: access patterns maintained per-volume. Hot-data on NVMe-Flash or on 3DX-Memory. Cold-data on slower disks / SAN/ Cloud-Storage/S3.

Scalability: Metadata based on “size of the volume” & not on “number of volumes”. Can reduce metadata traversal 100x.

Blast radius: Eliminates risk of scale out storage system corruption.

And much, much more such as cost savings due to resource efficiency, innate multitenancy, and cross cloud portability

The Conway’s Law benefits might be the most important - innovation unlocked

✓✓

✓✓

Page 14: Containerized Storage for Containers:  Why, What and How OpenEBS Works

✓ Scalbility - no metadata bottleneck

Global Metadata at a system level

Logical volumes

Lun

Application

Metadata is managed at block level

IO Blocks

IO Blocks

100TB Raw

8 TB Meta

100TB Raw

XFS Meta data XFS Meta data2 TB Meta

2 TB Meta

Logical Volumes in XFS files

Volumemeta

Lun

Application

IO Blocks

IO ChunksMetadata of the volume is managed at chunk level

100 GBMeta

The volume IO processing has to deal with the global metadata of 8TB

The volume IO processing has to deal with the volume metadata of 100GB

Page 15: Containerized Storage for Containers:  Why, What and How OpenEBS Works
Page 16: Containerized Storage for Containers:  Why, What and How OpenEBS Works

Cluster Admin - Enabling OpenEBS on K8s

K8s master K8s minionsStep 1: Use can existing K8s Cluster or Launch a new Cluster (locally or in your fav cloud provider or use stackpoint.io to create a cluster.)

Step 2: Configure OpenEBS on K8s.

kubectl apply -f openebs-operator.yaml

Step 3: Configure or Customize OpenEBS

kubectl apply -f openebs-config.yaml kubectl apply -f openebs-storageclasses.yaml

https://github.com/openebs/openebs/tree/master/k8s

Page 17: Containerized Storage for Containers:  Why, What and How OpenEBS Works

Developer - Using OpenEBS PVs

Step 1: Checkout the StorageClasses available

kubectl get sc

Step 2: Modify the Application YAML to use the openebs storage class.

kubectl apply -f demo-jupyter-openebs.yaml

https://github.com/openebs/openebs/blob/master/k8s/demo/jupyter/demo-jupyter-openebs.yaml

K8s master K8s minions

Step 3: Launch Jupyter UI

http://<external-ip>:<port>/

Page 18: Containerized Storage for Containers:  Why, What and How OpenEBS Works

Admin’s interaction with OpenEBS

K8s master K8s minions

Storage classesCentral Repo

Install OpenEBS

kubectl apply -f openebs-operator.yaml

kubectl apply -f openebs-storageclasses.yaml

kubectl apply -f openebs-config.yaml

1

2

3

Page 19: Containerized Storage for Containers:  Why, What and How OpenEBS Works

Developer’s interaction with OpenEBS

K8s master K8s minions

- Data science developer- Wants to set up a jupyter notebook (not an expert in storage)

1

kubectl apply -f demo-jupyter-openebs.yaml

2

- Configure the jupyter yaml file for all the jupyter functionality

- Read the available OpenEBS storage classes and choose one

- Launch the jupyter application

kubectl get sc

Page 20: Containerized Storage for Containers:  Why, What and How OpenEBS Works

In short….

Pod 1

OR

Pod 1VS

Cloud Native Cloud Washing

Page 21: Containerized Storage for Containers:  Why, What and How OpenEBS Works

Q&A

Join the community

#slackSlack.openebs.io

blog.openebs.io

@openebs

Page 22: Containerized Storage for Containers:  Why, What and How OpenEBS Works

What do you think?

https://github.com/openebs

Join the community

#slackSlack.openebs.io

blog.openebs.io

@openebs

Page 23: Containerized Storage for Containers:  Why, What and How OpenEBS Works

https://www.openebs.io/careers/

Join Us and contribute to Kubernetes

- Prioritized Replication Networking/Storage

- Federated Clusters- Analytics and ML Services- CNCF/CSI