kubernetes bangalore meetup- july 2017

18
Containerized Storage for Containers Kubernetes Bangalore Meetup July 08, 2017 @OpenEBS

Upload: openebs

Post on 21-Jan-2018

202 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Kubernetes Bangalore Meetup- July 2017

Containerized Storage for Containers

Kubernetes Bangalore Meetup July 08, 2017@OpenEBS

Page 2: Kubernetes Bangalore Meetup- July 2017

Kubernetes with external Storage

Special care for apps requiring persistence because

they require brittle tight coupling. Volumes

Provisioners

PVC/PV

StorageClasses

Attach/Detach

Controllers

CNCF/CSI

Container 1 Container 2 Container 2

Hard wired connections via plug-in

stateful

NAS SAN S3 NAS Cloud

Dynamic Provisioning

High Availability

Data Protection

Storage Silos

Vendor Lock-in

Slow Upgrades

Monolithic!

Page 3: Kubernetes Bangalore Meetup- July 2017

Manifests express intent

K8S used with special care for apps requiring persistence

because they require brittle tight coupling.

Hard wired connections via plug-in

Container 1

(Node1)

Container 2

(Node 2)

Container 3

(Node 3)

stateless stateful

DevOps workflow - Stateful/Stateless

Container 1 Container 2 Container 3

Container 1 Container 2 Container 3

NAS SAN S3 NAS Cloud

Any Server, Any Cloud

Page 4: Kubernetes Bangalore Meetup- July 2017

Manifests express intent

stateless

DevOps workflow - Stateful/Stateless

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 5: Kubernetes Bangalore Meetup- July 2017

Connector Based - Containerized Storage

Volumes

Provisioners

PVC/PV

StorageClasses

Attach/Detach

Controllers

CNCF/CSI

Container 1 Container 2 Container 3

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

stateful

Containerized storage for containers

Dynamic Provisioning

High Availability

Data Protection

Storage Silos, Kubernetes

Managed

Vendor Lock-in, Hybrid

Slow Upgrades, Seamless

Upgrades

Monolithic!, ContainerizedAny Server, Any Cloud

Page 6: Kubernetes Bangalore Meetup- July 2017

Kubernetes HCI - Containerized Storage

Page 7: Kubernetes Bangalore Meetup- July 2017

What is OpenEBS ?

OpenEBS is containerized storage for containers

Calico / Flannel owns networking for

K8S. OpenEBS owns storage.

Legacy

storage

X

Application

Pod

I run (use) OpenEBS just like I run (use)

K8S (EBS).

Page 8: Kubernetes Bangalore Meetup- July 2017

DevOps operations with OpenEBS

OpenEBS got the storage ops off my back!

Because of OpenEBS we are rolling into

production.

Page 9: Kubernetes Bangalore Meetup- July 2017

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 (Zones)AWS EBS Like APIsStorage Analytics!

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

Page 10: Kubernetes Bangalore Meetup- July 2017

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. Maya is the answer to the every other persistent storage question

Page 11: Kubernetes Bangalore Meetup- July 2017

OpenEBS 0.3 Demo : Data Scientist using

OpenEBS

UseCase: OpenEBS to provides

persistent storage for Jupyter

NoteBooks.

(Cluster Admin) Enables OpenEBS

on Kubernetes Cluster

(Developer / Data Scientist) Can

launch Jupyter Pod pointing to their

repository.

Page 12: Kubernetes Bangalore Meetup- July 2017

Admin’s interaction with OpenEBS

K8s master K8s minions

Storage classes

Central 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 13: Kubernetes Bangalore Meetup- July 2017

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 14: Kubernetes Bangalore Meetup- July 2017

Q&A

Join the community

#slackSlack.openebs.io

blog.openebs.io

@openebs

Page 15: Kubernetes Bangalore Meetup- July 2017

Cluster Admin - Enabling OpenEBS on K8s

K8s master K8s minions

Step 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 16: Kubernetes Bangalore Meetup- July 2017

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 17: Kubernetes Bangalore Meetup- July 2017

What do you think?

https://github.com/openebs

Join the community

#slackSlack.openebs.io

blog.openebs.io

@openebs

Page 18: Kubernetes Bangalore Meetup- July 2017

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

Join Us and contribute to Kubernetes

- Prioritized Replication (HA) Networking/Storage

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