SlideShare a Scribd company logo
Gluster Containerized
Storage for Cloud
Applications
Humble Chirammal
Luis Pabón
Gluster Summit, October 7, 2016
Warning: Lots of information coming ahead!
1. Provide my customers a platform for
their containerized applications and
storage needs
2. Manage compute, network, and
storage as a single converged cluster
I want to easily deploy my containerized
application with persistent storage
Technologies
OpenShift
GlusterHeketi
Technologies
OpenShift provides
platform as a service
infrastructure based on
Kubernetes container
management
OpenShift
GlusterHeketi
Containers Technology
Docker
Kubernetes
Master Node A Node B
Technologies
OpenShift
GlusterHeketi
Gluster deployed as a
container
Containerized Gluster
Pull Gluster container image :
# docker pull gluster/gluster-centos:gluster3u7_centos7
Example of how to start Gluster Container:
# docker run --name gluster -d -v /etc/glusterfs:/etc/glusterfs:z -v
/var/lib/glusterd:/var/lib/glusterd:z -v /var/log/glusterfs:/var/log/glusterfs:z -v
/sys/fs/cgroup:/sys/fs/cgroup:ro --net=host --privileged=true -v /dev:/dev
gluster/gluster-centos:gluster3u7_centos7
Caveats for Containerized Gluster
● Persistent storage on the host to save Gluster metadata
-v /etc/glusterfs:/etc/glusterfs:z -v /var/lib/glusterd:/var/lib/glusterd:z -v
/var/log/glusterfs:/var/log/glusterfs:z
● Host Networking (--net=host) of Docker for better performance on storage
network.
○ For Reference:
Docker Network “none”, adds a container to a container-specific network stack.
Docker Network ”bridge”, represents the bridge network (default docker0).
Docker Network ”host”, adds a container on the hosts network stack.
● Privileged container execution
Gluster Pods in Kubernetes
Gluster
Pod
Node A
Gluster
Pod
Node B
Gluster
Pod
Node C
Trusted
Pool
Disks on
Host
Example Nginx Application
apiVersion: v1
kind: Service
...
- port: 80
selector:
app: nginx
---
apiVersion: v1
kind: Route
...
name: my-nginx-svc
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nginx-claim
...
storage: 100Gi
… Continued ->
kind: Pod
apiVersion: v1
metadata:
name: nginx
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
volumeMounts:
- mountPath: "/var/cache/nginx"
name: cache
- mountPath: "/usr/share/nginx/html"
name: mypd
volumes:
- name: cache
- name: mypd
persistentVolumeClaim:
claimName: nginx-claim
Example Nginx Application
apiVersion: v1
kind: Service
...
- port: 80
selector:
app: nginx
---
apiVersion: v1
kind: Route
...
name: my-nginx-svc
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nginx-claim
...
storage: 100Gi
… Continued ->
kind: Pod
apiVersion: v1
metadata:
name: nginx
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
volumeMounts:
- mountPath: "/var/cache/nginx"
name: cache
- mountPath: "/usr/share/nginx/html"
name: mypd
volumes:
- name: cache
- name: mypd
persistentVolumeClaim:
claimName: nginx-claim
Application Definition
Example Nginx Application
apiVersion: v1
kind: Service
...
- port: 80
selector:
app: nginx
---
apiVersion: v1
kind: Route
...
name: my-nginx-svc
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nginx-claim
...
storage: 100Gi
… Continued ->
kind: Pod
apiVersion: v1
metadata:
name: nginx
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
volumeMounts:
- mountPath: "/var/cache/nginx"
name: cache
- mountPath: "/usr/share/nginx/html"
name: mypd
volumes:
- name: cache
- name: mypd
persistentVolumeClaim:
claimName: nginx-claim
Storage Request
Example Nginx Application
apiVersion: v1
kind: Service
...
- port: 80
selector:
app: nginx
---
apiVersion: v1
kind: Route
...
name: my-nginx-svc
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: nginx-claim
...
storage: 100Gi
… Continued ->
kind: Pod
apiVersion: v1
metadata:
name: nginx
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
volumeMounts:
- mountPath: "/var/cache/nginx"
name: cache
- mountPath: "/usr/share/nginx/html"
name: mypd
volumes:
- name: cache
- name: mypd
persistentVolumeClaim:
claimName: nginx-claim
Mount point in
application container
Kubernetes Gluster Mount Plugin
Gluster
Pod
Application Pod
Mounted Volume
Node A Node B
Bind Mount Volume
Architecture
Technologies
OpenShift
GlusterHeketi
Heketi provides dynamic
Gluster volume life cycle
management
Heketi
● Gluster storage and volume
manager
○ Containerized, virtualized, or bare metal
● Multi Gluster cluster aware
● Intelligent brick allocator
● REST service with authentication
Architecture
Heketi Cluster
Heketi Cluster
Nodes are added to failure
domains or zones
Heketi Cluster
Peer probes automatically
when adding nodes to a cluster
Heketi Cluster
Raw devices are registered and
initialized
Heketi Device Management
Raw Block Device
Physical Volume (PV)
Volume Group (VG)
LV Thin Pool
Logical Volume
(LV)
Gluster Brick
(XFS)
. . .
Created during device
initialization
Brick created when a
volume is requested
Heketi Cluster
Heketi Cluster
Brick Allocator
[
...
{Zone3, Node 192.168.13.100, Device /dev/sda},
{Zone2, Node 192.168.12.100, Device /dev/sda},
{Zone4, Node 192.168.14.100, Device /dev/sda},
{Zone1, Node 192.168.11.100, Device /dev/sda},
{Zone3, Node 192.168.13.100, Device /dev/sdb},
{Zone2, Node 192.168.12.100, Device /dev/sdb},
...
]
Heketi Cluster
Heketi Cluster
Demo
Node:
OpenShift Origin 1.2.0
CentOS Atomic 7.2
3 Drives
Node:
OpenShift Origin 1.2.0
CentOS Atomic 7.2
3 Drives
Node:
OpenShift Origin 1.2.0
CentOS Atomic 7.2
3 Drives
Master:
OpenShift Origin 1.2.0
CentOS Atomic 7.2
Client:
CentOS 7.2
Demo
Next ...
● Heketi
○ Failed hardware support: #161
○ Full Kubernetes support: #527
○ Block Storage API Proposal
● Kubernetes
○ Gluster Dynamic Provisioning
■ Available now! (Kubernetes 1.4)
■ Demo # https://youtu.be/uOBu7I5yg5s
○ Easier installation and deployment methods
More information
Heketi:
https://github.com/heketi/heketi

More Related Content

PPTX
Practical Glusto Example
PDF
Gluster as Block Store in Containers
PDF
Arbiter volumes in gluster
PDF
Hands On Gluster with Jeff Darcy
PDF
Gluster and Kubernetes
ODP
Accessing gluster ufo_-_eco_willson
PDF
Deploying pNFS over Distributed File Storage w/ Jiffin Tony Thottan and Niels...
ODP
Gluster containers!
Practical Glusto Example
Gluster as Block Store in Containers
Arbiter volumes in gluster
Hands On Gluster with Jeff Darcy
Gluster and Kubernetes
Accessing gluster ufo_-_eco_willson
Deploying pNFS over Distributed File Storage w/ Jiffin Tony Thottan and Niels...
Gluster containers!

What's hot (20)

ODP
GlusterFS Containers
ODP
Gluster d thread_synchronization_using_urcu_lca2016
PDF
Integrating gluster fs,_qemu_and_ovirt-vijay_bellur-linuxcon_eu_2013
ODP
Persistent Storage in Openshift using GlusterFS
PDF
Scalability and Performance of CNS 3.6
PDF
Container-relevant Upstream Kernel Developments
ODP
Gluster technical overview
ODP
GlusterFS and Openstack Storage
ODP
Developing apps and_integrating_with_gluster_fs_-_libgfapi
ODP
Introduction to highly_availablenfs_server_on_scale-out_storage_systems_based...
ODP
Integrating gluster fs,_qemu_and_ovirt-vijay_bellur-linuxcon_eu_2013
PDF
Gluster as Native Storage for Containers - past, present and future
PDF
Gluster intro-tdose
PDF
CoreOS @ summer meetup in Utrecht
PDF
OSBConf 2015 | Scale out backups with bareos and gluster by niels de vos
PDF
GFProxy: Scaling the GlusterFS FUSE Client
ODP
Kkeithley ufonfs-gluster summit
ODP
Gluster intro-tdose
PDF
Persistent Storage with Containers with Kubernetes & OpenShift
ODP
Scale out backups-with_bareos_and_gluster
GlusterFS Containers
Gluster d thread_synchronization_using_urcu_lca2016
Integrating gluster fs,_qemu_and_ovirt-vijay_bellur-linuxcon_eu_2013
Persistent Storage in Openshift using GlusterFS
Scalability and Performance of CNS 3.6
Container-relevant Upstream Kernel Developments
Gluster technical overview
GlusterFS and Openstack Storage
Developing apps and_integrating_with_gluster_fs_-_libgfapi
Introduction to highly_availablenfs_server_on_scale-out_storage_systems_based...
Integrating gluster fs,_qemu_and_ovirt-vijay_bellur-linuxcon_eu_2013
Gluster as Native Storage for Containers - past, present and future
Gluster intro-tdose
CoreOS @ summer meetup in Utrecht
OSBConf 2015 | Scale out backups with bareos and gluster by niels de vos
GFProxy: Scaling the GlusterFS FUSE Client
Kkeithley ufonfs-gluster summit
Gluster intro-tdose
Persistent Storage with Containers with Kubernetes & OpenShift
Scale out backups-with_bareos_and_gluster
Ad

Similar to Gluster Containerized Storage for Cloud Applications (20)

PDF
Create a Varnish cluster in Kubernetes for Drupal caching - DrupalCon North A...
PDF
Scaling docker with kubernetes
PDF
Web scale infrastructures with kubernetes and flannel
PDF
Istio Playground
PDF
What Can I Get You? An Introduction to Dynamic Resource Allocation
PDF
DevOps and Hybrid Applications: What You Need to Know
PDF
OpenShift Meetup - Tokyo - Service Mesh and Serverless Overview
PDF
Scaleable PHP Applications in Kubernetes
PDF
Introducing Koki Short
PDF
Containerizing your Security Operations Center
PDF
Kubernetes Operators - the next frontier in application automation - Ádám Sándor
PDF
Digital Forensics and Incident Response in The Cloud Part 3
PPTX
Kubernetes walkthrough
PDF
Dataservices - Data Processing mit Microservices
PPTX
Introduction to Kubernetes
PDF
Drupaljam 2017 - Deploying Drupal 8 onto Hosted Kubernetes in Google Cloud
PDF
Drone CI/CD 自動化測試及部署
PPTX
K8s best practices from the field!
PDF
Deep Dive into Kubernetes - Part 2
PDF
Kubernetes 101 and Fun
Create a Varnish cluster in Kubernetes for Drupal caching - DrupalCon North A...
Scaling docker with kubernetes
Web scale infrastructures with kubernetes and flannel
Istio Playground
What Can I Get You? An Introduction to Dynamic Resource Allocation
DevOps and Hybrid Applications: What You Need to Know
OpenShift Meetup - Tokyo - Service Mesh and Serverless Overview
Scaleable PHP Applications in Kubernetes
Introducing Koki Short
Containerizing your Security Operations Center
Kubernetes Operators - the next frontier in application automation - Ádám Sándor
Digital Forensics and Incident Response in The Cloud Part 3
Kubernetes walkthrough
Dataservices - Data Processing mit Microservices
Introduction to Kubernetes
Drupaljam 2017 - Deploying Drupal 8 onto Hosted Kubernetes in Google Cloud
Drone CI/CD 自動化測試及部署
K8s best practices from the field!
Deep Dive into Kubernetes - Part 2
Kubernetes 101 and Fun
Ad

More from Gluster.org (20)

PDF
Automating Gluster @ Facebook - Shreyas Siravara
PDF
nfusr: a new userspace NFS client based on libnfs - Shreyas Siravara
PDF
Facebook’s upstream approach to GlusterFS - David Hasson
PDF
Throttling Traffic at Facebook Scale
PDF
GlusterFS w/ Tiered XFS
PDF
Gluster Metrics: why they are crucial for running stable deployments of all s...
PDF
Up and Running with Glusto & Glusto-Tests in 5 Minutes (or less)
PDF
Data Reduction for Gluster with VDO
PDF
Releases: What are contributors responsible for
PDF
RIO Distribution: Reconstructing the onion - Shyamsundar Ranganathan
PDF
Native Clients, more the merrier with GFProxy!
PDF
Gluster: a SWOT Analysis
PDF
GlusterD-2.0: What's Happening? - Kaushal Madappa
PDF
What Makes Us Fail
PDF
Heketi Functionality into Glusterd2
PDF
Architecture of the High Availability Solution for Ganesha and Samba with Kal...
PDF
Challenges with Gluster and Persistent Memory with Dan Lambright
PDF
Sharding: Past, Present and Future with Krutika Dhananjay
PDF
State of Gluster Performance
PDF
Integration of Glusterfs in to commvault simpana
Automating Gluster @ Facebook - Shreyas Siravara
nfusr: a new userspace NFS client based on libnfs - Shreyas Siravara
Facebook’s upstream approach to GlusterFS - David Hasson
Throttling Traffic at Facebook Scale
GlusterFS w/ Tiered XFS
Gluster Metrics: why they are crucial for running stable deployments of all s...
Up and Running with Glusto & Glusto-Tests in 5 Minutes (or less)
Data Reduction for Gluster with VDO
Releases: What are contributors responsible for
RIO Distribution: Reconstructing the onion - Shyamsundar Ranganathan
Native Clients, more the merrier with GFProxy!
Gluster: a SWOT Analysis
GlusterD-2.0: What's Happening? - Kaushal Madappa
What Makes Us Fail
Heketi Functionality into Glusterd2
Architecture of the High Availability Solution for Ganesha and Samba with Kal...
Challenges with Gluster and Persistent Memory with Dan Lambright
Sharding: Past, Present and Future with Krutika Dhananjay
State of Gluster Performance
Integration of Glusterfs in to commvault simpana

Recently uploaded (20)

PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PDF
Modernizing your data center with Dell and AMD
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PPTX
Cloud computing and distributed systems.
PDF
Unlocking AI with Model Context Protocol (MCP)
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PDF
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
PDF
Machine learning based COVID-19 study performance prediction
DOCX
The AUB Centre for AI in Media Proposal.docx
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Spectral efficient network and resource selection model in 5G networks
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Understanding_Digital_Forensics_Presentation.pptx
The Rise and Fall of 3GPP – Time for a Sabbatical?
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
Modernizing your data center with Dell and AMD
20250228 LYD VKU AI Blended-Learning.pptx
Cloud computing and distributed systems.
Unlocking AI with Model Context Protocol (MCP)
CIFDAQ's Market Insight: SEC Turns Pro Crypto
Bridging biosciences and deep learning for revolutionary discoveries: a compr...
Machine learning based COVID-19 study performance prediction
The AUB Centre for AI in Media Proposal.docx
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
Reach Out and Touch Someone: Haptics and Empathic Computing
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Advanced methodologies resolving dimensionality complications for autism neur...
Spectral efficient network and resource selection model in 5G networks

Gluster Containerized Storage for Cloud Applications

  • 1. Gluster Containerized Storage for Cloud Applications Humble Chirammal Luis Pabón Gluster Summit, October 7, 2016
  • 2. Warning: Lots of information coming ahead!
  • 3. 1. Provide my customers a platform for their containerized applications and storage needs
  • 4. 2. Manage compute, network, and storage as a single converged cluster
  • 5. I want to easily deploy my containerized application with persistent storage
  • 7. Technologies OpenShift provides platform as a service infrastructure based on Kubernetes container management OpenShift GlusterHeketi
  • 12. Containerized Gluster Pull Gluster container image : # docker pull gluster/gluster-centos:gluster3u7_centos7 Example of how to start Gluster Container: # docker run --name gluster -d -v /etc/glusterfs:/etc/glusterfs:z -v /var/lib/glusterd:/var/lib/glusterd:z -v /var/log/glusterfs:/var/log/glusterfs:z -v /sys/fs/cgroup:/sys/fs/cgroup:ro --net=host --privileged=true -v /dev:/dev gluster/gluster-centos:gluster3u7_centos7
  • 13. Caveats for Containerized Gluster ● Persistent storage on the host to save Gluster metadata -v /etc/glusterfs:/etc/glusterfs:z -v /var/lib/glusterd:/var/lib/glusterd:z -v /var/log/glusterfs:/var/log/glusterfs:z ● Host Networking (--net=host) of Docker for better performance on storage network. ○ For Reference: Docker Network “none”, adds a container to a container-specific network stack. Docker Network ”bridge”, represents the bridge network (default docker0). Docker Network ”host”, adds a container on the hosts network stack. ● Privileged container execution
  • 14. Gluster Pods in Kubernetes Gluster Pod Node A Gluster Pod Node B Gluster Pod Node C Trusted Pool Disks on Host
  • 15. Example Nginx Application apiVersion: v1 kind: Service ... - port: 80 selector: app: nginx --- apiVersion: v1 kind: Route ... name: my-nginx-svc --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: nginx-claim ... storage: 100Gi … Continued -> kind: Pod apiVersion: v1 metadata: name: nginx labels: app: nginx spec: containers: - name: nginx image: nginx ports: - containerPort: 80 volumeMounts: - mountPath: "/var/cache/nginx" name: cache - mountPath: "/usr/share/nginx/html" name: mypd volumes: - name: cache - name: mypd persistentVolumeClaim: claimName: nginx-claim
  • 16. Example Nginx Application apiVersion: v1 kind: Service ... - port: 80 selector: app: nginx --- apiVersion: v1 kind: Route ... name: my-nginx-svc --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: nginx-claim ... storage: 100Gi … Continued -> kind: Pod apiVersion: v1 metadata: name: nginx labels: app: nginx spec: containers: - name: nginx image: nginx ports: - containerPort: 80 volumeMounts: - mountPath: "/var/cache/nginx" name: cache - mountPath: "/usr/share/nginx/html" name: mypd volumes: - name: cache - name: mypd persistentVolumeClaim: claimName: nginx-claim Application Definition
  • 17. Example Nginx Application apiVersion: v1 kind: Service ... - port: 80 selector: app: nginx --- apiVersion: v1 kind: Route ... name: my-nginx-svc --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: nginx-claim ... storage: 100Gi … Continued -> kind: Pod apiVersion: v1 metadata: name: nginx labels: app: nginx spec: containers: - name: nginx image: nginx ports: - containerPort: 80 volumeMounts: - mountPath: "/var/cache/nginx" name: cache - mountPath: "/usr/share/nginx/html" name: mypd volumes: - name: cache - name: mypd persistentVolumeClaim: claimName: nginx-claim Storage Request
  • 18. Example Nginx Application apiVersion: v1 kind: Service ... - port: 80 selector: app: nginx --- apiVersion: v1 kind: Route ... name: my-nginx-svc --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: nginx-claim ... storage: 100Gi … Continued -> kind: Pod apiVersion: v1 metadata: name: nginx labels: app: nginx spec: containers: - name: nginx image: nginx ports: - containerPort: 80 volumeMounts: - mountPath: "/var/cache/nginx" name: cache - mountPath: "/usr/share/nginx/html" name: mypd volumes: - name: cache - name: mypd persistentVolumeClaim: claimName: nginx-claim Mount point in application container
  • 19. Kubernetes Gluster Mount Plugin Gluster Pod Application Pod Mounted Volume Node A Node B Bind Mount Volume
  • 22. Heketi ● Gluster storage and volume manager ○ Containerized, virtualized, or bare metal ● Multi Gluster cluster aware ● Intelligent brick allocator ● REST service with authentication
  • 25. Heketi Cluster Nodes are added to failure domains or zones
  • 26. Heketi Cluster Peer probes automatically when adding nodes to a cluster
  • 27. Heketi Cluster Raw devices are registered and initialized
  • 28. Heketi Device Management Raw Block Device Physical Volume (PV) Volume Group (VG) LV Thin Pool Logical Volume (LV) Gluster Brick (XFS) . . . Created during device initialization Brick created when a volume is requested
  • 31. Brick Allocator [ ... {Zone3, Node 192.168.13.100, Device /dev/sda}, {Zone2, Node 192.168.12.100, Device /dev/sda}, {Zone4, Node 192.168.14.100, Device /dev/sda}, {Zone1, Node 192.168.11.100, Device /dev/sda}, {Zone3, Node 192.168.13.100, Device /dev/sdb}, {Zone2, Node 192.168.12.100, Device /dev/sdb}, ... ]
  • 34. Demo Node: OpenShift Origin 1.2.0 CentOS Atomic 7.2 3 Drives Node: OpenShift Origin 1.2.0 CentOS Atomic 7.2 3 Drives Node: OpenShift Origin 1.2.0 CentOS Atomic 7.2 3 Drives Master: OpenShift Origin 1.2.0 CentOS Atomic 7.2 Client: CentOS 7.2
  • 35. Demo
  • 36. Next ... ● Heketi ○ Failed hardware support: #161 ○ Full Kubernetes support: #527 ○ Block Storage API Proposal ● Kubernetes ○ Gluster Dynamic Provisioning ■ Available now! (Kubernetes 1.4) ■ Demo # https://youtu.be/uOBu7I5yg5s ○ Easier installation and deployment methods