Setting up persistant storage using OpenEBS

Install iSCSI on all nodes

Refer: https://docs.openebs.io/docs/next/prerequisites.html

Install iSCSI tools if not installed

sudo apt-get update
sudo apt-get install open-iscsi
sudo systemctl enable --now iscsid

Check if iSCSI is running

sudo systemctl status iscsid

image-1621427648458.png

Make sure you have admin context

kubectl config use-context kubernetes-admin@kubernetes

Remove taint from master node

We need to use master node as a storage node where all database files and persistant volumes will be stored. Remove taint from master node so that master node will be available to schedule pods

kubectl taint node <masternode_name> node-role.kubernetes.io/master:NoSchedule-

Install using kubectl

Download file https://openebs.github.io/charts/openebs-operator.yaml

to install OpenEBS to use volumes from master node we need to label master node with appropriate label

Use following command to label master node

kubectl label nodes <node-name> node=openebs

Next, in the downloaded openebs-operator.yaml, find the PodSpec for openebs-provisioner, maya-apiserver, openebs-snapshot-operator, openebs-admission-server and openebs-ndm pods and add the following key-value pair under nodeSelector field

nodeSelector field will be available in pod > specs > template > specs > nodeSelector

nodeSelector:
  node: openebs

Install OpenEBS with updated command

kubectl apply -f openebs-operator.yml

Check if OpenEBS has been installed

kubectl get pods -n openebs -o wide

Output should show running pods

image-1621437399553.png