This project is a functional implementation of Rozofs distributed filesystem on Kubernetes.
It features a daemonset to bring up Rozofs daemons on all kubernetes nodes,
and a deployment to bring up a provisioner for dynamic Rozofs volume provisioning.
Wiki: http://rozofs.github.io/rozofs/master/AboutRozoFS.html
Github: https://github.com/rozofs/rozofs
- Each node runs systemd
- rpcbind & jq have to be installed on each node
- Define the export node and the cluster nodes on which Rozofs will create volumes, by creating a kubernetes configmap. The fileystem requires a layout with least 4 nodes in the cluster in order to deploy volumes. More info: http://rozofs.github.io/rozofs/master/AboutRozoFS.html#layouts
$ EXPORTNODE="<export_node>"
$ CLUSTER="<node1> <node2> <node3> <node4> <...>"
$ kubectl create configmap rozofs-cluster --from-literal=clusternodes="${CLUSTER}" --from-literal=exportnode="${EXPORTNODE}"
- Deploy the daemonset and the FlexVolume driver:
$ kubectl apply -f https://github.com/MochaCaffe/rozofs-provisioner/raw/master/deploy/daemonset.yaml
- Deploy the provisioner:
$ kubectl apply -f https://github.com/MochaCaffe/rozofs-provisioner/raw/master/deploy/provisioner.yaml
A storage class called "rozofs" is automatically created with the provisioner.
The provisioner watches for Persistent Volume Claims (PVC) that request a new Persistent Volume, and automatically provisions a new volume to be binded with the claim, using "rozofs" Storage Class.
A Persistent Volume defines mount instructions for the FlexVolume plugin.
- Create a PVC
$ kubectl apply -f https://github.com/MochaCaffe/rozofs-provisioner/raw/master/deploy/claim.yaml
- Then, mount the volume into a light pod:
$ kubectl apply -f https://github.com/MochaCaffe/rozofs-provisioner/raw/master/deploy/test-pod.yaml
- dpertin/docker-rozofs - Dockerize RozoFS services
- kvaps/docker-rozofs - Deamonset
- kubernetes-sigs/sig-storage-lib-external-provisioner - Example provisioner golang file
- itnext.io - How to create a custom persistent volume plugin in Kubernetes