Containerized Linstor Storage and Operator easy to run in your Kubernetes cluster.
Image | Build Status |
---|---|
linstor-controller | |
linstor-satellite | |
linstor-stunnel | |
linstor-operator |
- Working Kubernetes cluster
- DRBD9 kernel module installed on each sattelite node
- PostgeSQL database or other backing store for redundancy
- Containerized Linstor satellites tested only on Ubuntu and Debian systems.
Linstor consists of several components:
- Linstor-controller - Controller is main control point for Linstor, it provides API for clients and communicates with satellites for creating and monitor DRBD-devices.
- Linstor-satellite - Satellites run on every node, they listen and perform controller tasks. They operates directly with LVM and ZFS subsystems.
- Linstor-csi - CSI driver provides compatibility level for adding Linstor support for Kubernetes
We are also using:
- Stunnel - for encrypt all connections between linstor clients and controller
- Linstor-operator - for automate ususual tasks, eg. create linstor nodes and storage pools
Install Helm and clone this repository, then cd into it.
NOTE:
Commands below provided for Helm v3 but Helm v2 is also supported.
You can usehelm template
instead ofhelm install
, this is also working as well.
-
Install stolon chart:
helm repo add stable https://kubernetes-charts.storage.googleapis.com helm install linstor-db stable/stolon -f examples/linstor-db.yaml
NOTE:
In case of update your stolon add--set job.autoCreateCluster=false
flag to not reinitialisate your cluster -
Create Persistent Volumes:
helm install \ --set node=node1,path=/var/lib/linstor-db \ data-linstor-db-stolon-keeper-0 \ helm/pv-hostpath helm install \ --set node=node2,path=/var/lib/linstor-db \ data-linstor-db-stolon-keeper-1 \ helm/pv-hostpath helm install \ --set node=node3,path=/var/lib/linstor-db \ data-linstor-db-stolon-keeper-2 \ helm/pv-hostpath
Parameters
name
andnamespace
must match the PVC's name and namespace of your database,node
should match exact node name.Check your PVC/PV list after creation, if everything right, they should obtain Bound status.
-
Connect to database:
kubectl exec -ti -n linstor linstor-db-stolon-keeper-0 bash PGPASSWORD=$(cat $STKEEPER_PG_SU_PASSWORDFILE) psql -h linstor-db-stolon-proxy -U stolon postgres
-
Create user and database for linstor:
CREATE DATABASE linstor; CREATE USER linstor WITH PASSWORD 'hackme'; GRANT ALL PRIVILEGES ON DATABASE linstor TO linstor;
-
Install kube-linstor chart:
helm install -g helm/kube-linstor --namespace linstor -f examples/linstor-db.yaml
You can get interactive linstor shell by simple exec into linstor-controller container:
kubectl exec -ti -n linstor linstor-controller-0 linstor
Refer to official linstor documentation for define nodes and create new resources.
- This project under Apache License
- linstor-server, drbd and drbd-utils is GPL licensed by LINBIT