• This repository has been archived on 07/Jul/2020
  • Stars
    star
    875
  • Rank 52,157 (Top 2 %)
  • Language
    Shell
  • License
    Apache License 2.0
  • Created about 8 years ago
  • Updated over 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

GlusterFS Native Storage Service for Kubernetes

gluster-kubernetes

Build Status

GlusterFS Native Storage Service for Kubernetes

gluster-kubernetes is a project to provide Kubernetes administrators a mechanism to easily deploy GlusterFS as a native storage service onto an existing Kubernetes cluster. Here, GlusterFS is managed and orchestrated like any other app in Kubernetes. This is a convenient way to unlock the power of dynamically provisioned, persistent GlusterFS volumes in Kubernetes.

Component Projects

  • Kubernetes, the container management system.
  • GlusterFS, the scale-out storage system.
  • heketi, the RESTful volume management interface for GlusterFS.

Presentations

You can find slides and videos of community presentations here.

>>> Video demo of the technology! <<<

Documentation

Quickstart

If you already have a Kubernetes cluster you wish to use, make sure it meets the prerequisites outlined in our setup guide.

This project includes a vagrant setup in the vagrant/ directory to spin up a Kubernetes cluster in VMs. To run the vagrant setup, you'll need to have the following pre-requisites on your machine:

  • 4GB of memory
  • 32GB of storage minimum, 112GB recommended
  • ansible
  • vagrant
  • libvirt or VirtualBox

To spin up the cluster, simply run ./up.sh in the vagrant/ directory.

NOTE: If you plan to run ./up.sh more than once the vagrant setup supports caching packages and container images. Please read the vagrant directory README for more information on how to configure and use the caching support.

Next, copy the deploy/ directory to the master node of the cluster.

You will have to provide your own topology file. A sample topology file is included in the deploy/ directory (default location that gk-deploy expects) which can be used as the topology for the vagrant libvirt setup. When creating your own topology file:

  • Make sure the topology file only lists block devices intended for heketi's use. heketi needs access to whole block devices (e.g. /dev/sdb, /dev/vdb) which it will partition and format.

  • The hostnames array is a bit misleading. manage should be a list of hostnames for the node, but storage should be a list of IP addresses on the node for backend storage communications.

If you used the provided vagrant libvirt setup, you can run:

$ vagrant ssh-config > ssh-config
$ scp -rF ssh-config ../deploy master:
$ vagrant ssh master
[vagrant@master]$ cd deploy
[vagrant@master]$ mv topology.json.sample topology.json

The following commands are meant to be run with administrative privileges (e.g. sudo su beforehand).

At this point, verify the Kubernetes installation by making sure all nodes are Ready:

$ kubectl get nodes
NAME      STATUS    AGE
master    Ready     22h
node0     Ready     22h
node1     Ready     22h
node2     Ready     22h

NOTE: To see the version of Kubernetes (which will change based on latest official releases) simply do kubectl version. This will help in troubleshooting.

Next, to deploy heketi and GlusterFS, run the following:

$ ./gk-deploy -g

If you already have a pre-existing GlusterFS cluster, you do not need the -g option.

After this completes, GlusterFS and heketi should now be installed and ready to go. You can set the HEKETI_CLI_SERVER environment variable as follows so that it can be read directly by heketi-cli or sent to something like curl:

$ export HEKETI_CLI_SERVER=$(kubectl get svc/heketi --template 'http://{{.spec.clusterIP}}:{{(index .spec.ports 0).port}}')

$ echo $HEKETI_CLI_SERVER
http://10.42.0.0:8080

$ curl $HEKETI_CLI_SERVER/hello
Hello from Heketi

Your Kubernetes cluster should look something like this:

$ kubectl get nodes,pods
NAME      STATUS    AGE
master    Ready     22h
node0     Ready     22h
node1     Ready     22h
node2     Ready     22h
NAME                               READY     STATUS              RESTARTS   AGE
glusterfs-node0-2509304327-vpce1   1/1       Running             0          1d
glusterfs-node1-3290690057-hhq92   1/1       Running             0          1d
glusterfs-node2-4072075787-okzjv   1/1       Running             0          1d
heketi-3017632314-yyngh            1/1       Running             0          1d

You should now also be able to use heketi-cli or any other client of the heketi REST API (like the GlusterFS volume plugin) to create/manage volumes and then mount those volumes to verify they're working. To see an example of how to use this with a Kubernetes application, see the following:

Hello World application using GlusterFS Dynamic Provisioning

Contact

The gluster-kubernetes developers hang out in #sig-storage on the Kubernetes Slack and on IRC channels in #gluster and #heketi at freenode network.

And, of course, you are always welcomed to reach us via Issues and Pull Requests on GitHub.

More Repositories

1

glusterfs

Gluster Filesystem : Build your distributed storage in minutes
C
4,537
star
2

glusterdocs

This repo contains the source of official Gluster documentation rendered at https://docs.gluster.org
HTML
342
star
3

gluster-ansible

A core library of gluster specific roles and modules for ansible/ansible tower.
194
star
4

glusterd2

[DEPRECATED] Glusterd2 is the distributed management framework to be used for GlusterFS.
Go
166
star
5

gluster-prometheus

Gluster monitoring using Prometheus
Go
119
star
6

gdeploy

gdeploy - an Ansible based tool to deploy GlusterFS
Python
91
star
7

gluster-block

A framework for gluster block storage
C
74
star
8

glusterfs-hadoop

GlusterFS plugin for Hadoop HCFS
Java
69
star
9

glusterfs-java-filesystem

GlusterFS for Java
Java
57
star
10

gstatus

gstatus is a command to view current health of a glusterfs cluster
Python
54
star
11

gluster-csi-driver

DEPRECATED: Gluster Container Storage Interface (CSI) driver
Go
52
star
12

gogfapi

A Go language wrapper around gfapi.
Go
50
star
13

glusterfs-specs

Mirror of the specifications and design documents for components and features in Gluster. Patches need to be sent through Gerrit.
45
star
14

gluster-swift

Object interface to GlusterFS (this is only a public mirror)
Python
45
star
15

libgfapi-python

Python bindings for libgfapi - (This is only a public mirror)
Python
42
star
16

gluster-ansible-cluster

Ansible role to create and deploy a Gluster cluster.
40
star
17

gcs

Check github.com/heketi, github.com/gluster/gluster-containers, or github.com/kadalu/kadalu as active alternatives
Ruby
36
star
18

anthill

A Kubernetes/OpenShift operator to manage Gluster clusters
Go
35
star
19

cockpit-gluster

Easy to use management console for Gluster Storage with glusterd2 support.
JavaScript
33
star
20

gbench

Performance Benchmarking scripts for Gluster
Python
31
star
21

gluster-ansible-infra

Ansible role to enable and deploy the backend of a Gluster cluster.
Jinja
28
star
22

gluster-health-report

Gluster Health Report Tool
Python
23
star
23

distaf

Automation Test Framework For Distributed Systems
Python
22
star
24

gluster-mixins

A set of Grafana dashboards and Prometheus alerts for Gluster.
Shell
22
star
25

restapi

REST APIs for Gluster Management
Python
20
star
26

glusto-tests

Functional test framework for glusterfs.
Python
19
star
27

glusterfs-kubernetes-openshift

glusterfs-kubernetes-openshift
19
star
28

glustercli-python

Python bindings for Gluster Commands and Metrics
Python
19
star
29

gluster-one

Gluster One -- An Opinionated Node Executor
Python
18
star
30

glusterfs-debian

Debian packaging of Gluster
14
star
31

glusterweb

Web Content for gluster.org -- Deprecated as of September 2017
12
star
32

storhaug

High Availability (HA) setup utility for NFS-Ganesha
Shell
12
star
33

gmc

Java
12
star
34

gluster-subvol

Subdirectories of Gluster volumes as PVs in Kubernetes and OpenShift
Shell
11
star
35

nbd-runner

Network Block Device for Distributed Storages, such as Gluster, Ceph, Azure, etc.
C
11
star
36

piragua

Rust
10
star
37

glusterfs-coreutils

Tools that work directly on Gluster volumes, inspired by the standard coreutils.
C
10
star
38

gluster.org_ansible_configuration

Read-only copy of the ansible configuration used to power gluster.org infrastructure
Python
10
star
39

gluster-ansible-features

Ansible role to enable a Gluster cluster with gluster-specific features like samba, ganesha etc.
Python
10
star
40

gluster-ansible-collection

Python
9
star
41

libgfapi-jni

Java Native Interface (JNI) bindings for libgfapi (the GlusterFS client API)
Java
8
star
42

libgfapi-java-io

Java bindings for libgfapi, similar to java.io
Java
8
star
43

gluster-zeroconf

Autodiscovery utility for Gluster Storage Servers
Python
7
star
44

glusterfs-patch-acceptance-tests

Smoke and regression tests for GlusterFS
Shell
6
star
45

gluster-tutorial

This github is mainly to host the demos and other docs for LISA gluster tutorial 2015, but can also be used as a reference for any new gluster user
6
star
46

glusterfs-containers-tests

Python
6
star
47

glusterfsiostat

A tool to provide performance statistics similar to those given by nfsiostat about glusterfs mounts on a system through a standard CLI and visualization of data with a graphics processing utility.
JavaScript
6
star
48

gluster-nagios-addons

Plugins to monitor gluster services on hosts - to work with nagios-server-addons
Python
6
star
49

xglfs

GlusterFS API FUSE client
C
6
star
50

python-gluster-mgmt-client

Python bindings for gluster
Python
5
star
51

gmc-target

Gluster Management Console Target Repo
XSLT
5
star
52

glusterfs-selinux

Makefile
5
star
53

gadmin

Go
5
star
54

gluster-ansible-maintenance

5
star
55

glustertool

Collection of Gluster Tools
Python
5
star
56

centosci

Centos CI jobs for Gluster project
Shell
4
star
57

samba-glusterfs

GlusterFS integration for Samba 3.6. This project is no longer maintained.
C
4
star
58

gluster-ansible-repositories

Collection of Ansible roles for repository management
4
star
59

Gfapi-sys

libgfapi FFI bindings for Rust
Rust
4
star
60

gluster-block-restapi

ReST APIs for managing Gluster Block Volumes
Go
4
star
61

parsefuse

fusedump dissector tool
Ruby
4
star
62

glusterfs-suse

SuSE and OpenSuSE packaging of Gluster
3
star
63

libgfapi-perl

GlusterFS libgfapi binding for Perl 5
Perl
3
star
64

gluster-debug-tools

Miscellaneous tools for debugging Gluster
Shell
3
star
65

planet-gluster

I Have A Dream, that One Day we will have a Gluster Planet....
Haml
3
star
66

softserve

Flask web app for Gluster cluster over AWS cloud.
Python
3
star
67

samba-integration

Integration tests for Samba and Gluster
Ruby
3
star
68

integration

Project management and tracking area for Gluster Experience for Developers and Integration
3
star
69

redant

A Test Automation Framework for a clustered network filesystem -> GlusterFS
Python
3
star
70

historic

Old Glusterfs sources converted to git
C
2
star
71

gdeploy_config_generator

Python
2
star
72

swiftkrbauth

Python
2
star
73

infra-docs

Documentation of gluster community infrastructure
Python
2
star
74

community

This repository is for management of all Gluster community initiatives. Come play!
2
star
75

devblog

Developer Blogs
HTML
2
star
76

glusterfs-perf

Ansible roles and tools to create a test environment and run performance tests
Python
2
star
77

gluster-collectd

gluster collectd plugin which collects and pushes metrics to collectd daemon
Python
2
star
78

ascii_binder_search_plugin

A seamless search integration plugin for ascii_binder generated sites
Python
2
star
79

anthill-heketi

Operator to deploy Heketi-based containerized Gluster
Go
2
star
80

Gluster-Builds

Testing build automation with GitHub actions for Gluster Repository
Dockerfile
2
star
81

gluster-nagios-common

Common utilities required for gluster-nagios-common and nagios-server-addons
Python
2
star
82

upstream-glusterfs-builds

This repo contains end to end requirements of buiding, packaging and release of glusterfs upstream.
Shell
2
star
83

glusterfs-xlators

Unsupported, deprecated, retired, experimental, etc., xlators removed from the GlusterFS source.
C
1
star
84

nagios-server-addons

Plugins and configuration helpers for gluster monitoring installed on nagios server (to work with gluster-nagios-addons plugins)
Python
1
star
85

gluster-performance-test-suite

Setup and run perfromance test on glusterfs
Shell
1
star
86

gluster-geosync

Repository to implement Path based Geo-replication between two GlusterFS Volumes
Python
1
star