Skip to content
This repository has been archived by the owner on Feb 9, 2019. It is now read-only.

LINBIT/linstor-flexvolume

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

96 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

THIS PROJECT IS DEPRECATED, PLEASE USE OUR CSI PLUGIN














Linstor flexvolume plugin for Kubernetes

Building

Requires Go 1.10 or higher and a configured GOPATH

mkdir -p $GOPATH/src/github.com/LINBIT/

cd $GOPATH/src/github.com/LINBIT/

git clone https://github.com/LINBIT/linstor-flexvolume

cd linstor-flexvolume

make

This will compile a binary targeting the local machine's architecture and place it into the root of the project.

Installing

Place the generated binary named linstor-flexvolume under the following path on the kubelet and kube-controller-manager nodes:

/usr/libexec/kubernetes/kubelet-plugins/volume/exec/linbit~linstor-flexvolume/

After installation, restarting kubelet process is required on each node for Kubernetes versions older than 1.8.

You must set the --enable-controller-attach-detach=false option on all kubelets. For systemd managed kubelets this can be set in /etc/systemd/system/kubelet.service.d/10-kubeadm.conf

Usage

This project must be used in conjunction with a working LINSTOR cluster. LINSTOR's documentation is the foremost guide on setting up and administering LINSTOR.

Resources must be created before attachment with Linstor or linstor-external-provisioner before they are available for this plugin to use.

The kube-controller-manager and all kubelets eligible to run containers must be part of the same Linstor cluster. Volumes will be attached to the kubelet across the network via the DRBD Transport protocol, so they do not require local storage. You will need to install the Linstor Client on each kubelet and unless the Linstor controller is running locally, you'll need to pass in the controllers option in order to communicate with the Linstor controller. Either via setting in the StorageClass and using the refular PVC notation, or by using the flexvolume notation>

Kubelet nodes names must match the output of uname -n exactly. If they do not, this may be overridden via the kubelet --hostname-override parameter

Please note that the Kubernetes PV name and the associated Linstor resource name must match exactly in order for the volume to remain attached to the kubelet due to kubernetes/kubernetes#44737

example.yaml, located in the root of this project, contains an example configuration that attaches a resource named r0 to the container under the path /data. Note that that the PV name is also named r0.