
High-available Lustre filesystem concept with DRBD for Kubernetes.
| Image | Build Status |
|---|---|
| kvaps/kube-lustre-configurator | |
| kvaps/lustre | |
| kvaps/lustre-client | |
| kvaps/lustre-install | |
| kvaps/drbd | |
| kvaps/drbd-install |
All project represents a few simple docker-images with shell-scripts, each one do some does its specific task.
Since lustre zfs and drbd work at the kernel level, which little bit does not fit into the docker's ideology, almost all actions executes directly on the host machine. Docker and Kubernetes used here only as orchestration-system and ha-management framework.
What each image does?
| Image | Role |
|---|---|
| kube-lustre-configurator | Reads config, then generates templates and assign resources to specific Kubernetes nodes |
| lustre | Makes lustre target, then imports zpool and mounts lustre target |
| lustre-client | Mounts lustre filesystem |
| lustre-install | Installs lustre and zfs packages and dkms modules |
| drbd | Makes and runs drbd resource |
| drbd-install | Installs drbd packages and dkms modules |
lustre kernel-module)You need to understand that all packages will installed directly on your node.
ldev.conf file.kubectl create namespace lustre
kubectl create clusterrolebinding --user system:serviceaccount:lustre:default lustre-cluster-admin --clusterrole cluster-admin
curl -O https://raw.githubusercontent.com/kvaps/kube-lustre/master/yaml/kube-lustre-config.yaml
vim kube-lustre-config.yaml
In configuration.json you can specify configurations that will be identical for each part your daemons.
mountpoint requires only for clients.device, port.protocol and syncer_rate options there.In daemons.json you can specify four types of daemons, example:
mgs - Managment servermdt3 - Metadata target (index:3)ost4 - Object storage target (index:4)mdt0-mgs - Metadata target (index:0) with managment serverOnly one management server can be specified
Apply your config:
kubectl apply -f kube-lustre-config.yaml
kubectl create -f https://raw.githubusercontent.com/kvaps/kube-lustre/master/yaml/kube-lustre-configurator.yaml
After installation you will have one common filesystem mounted to same mountpoint on each node.
You can use hostPath volumes for passthrough directories from lustre filesystem to your containers, or install special hostpath provisioner for Kubernetes for automate volumes allocation process.
In case of ha-installation if you want to migrate lustre resources from one node to another one, you can use simple command for achieve this:
kubectl drain <node> --ignore-daemonsets
Don't forget to enable node after it will able to run resources:
kubectl uncordon <node>
Content type
Image
Digest
Size
2 MB
Last updated
over 8 years ago
docker pull kvaps/drbd-install