Preparing the Cluster

Configure Mayastor Nodes

In the context of the Mayastor application, a "Mayastor Node" (MSN) is a Kubernetes worker node on which is scheduled an instance of a Mayastor data plane pod and which is thus capable of hosting storage "pools" and exporting Persistent Volumes (PV) to application pods within the cluster. A MSN makes use of block storage device(s) attached to it to contribute storage capacity to its pool(s), which supply backing storage for the Persistent Volumes dynamically-provisioned on the cluster by Mayastor.
In this version of Mayastor, a worker node MUST be configured as a MSN in order for it to be able to mount PVs provisioned by the Mayastor control plane. That is to say, application pods using Mayastor volumes can only be successfully scheduled on MSNs. It is not necessary for a MSN to have any Pools configured on it, if it is required only to mount volumes for applications rather than host data replicas for them.
This restriction will be removed in version 2.0
New MSN nodes can be provisioned within the cluster at any time after the initial deployment, as aggregate demands for capacity, performance and availability levels increase.

Verify / Enable Huge Page Support

2MiB-sized Huge Pages must be supported and enabled on a MSN. A minimum number of 1024 such pages (i.e. 2GiB total) must be available exclusively to the Mayastor pod on each node, which should be verified thus:
grep HugePages /proc/meminfo
AnonHugePages: 0 kB
ShmemHugePages: 0 kB
HugePages_Total: 1024
HugePages_Free: 671
HugePages_Rsvd: 0
HugePages_Surp: 0
If fewer than 1024 pages are available then the page count should be reconfigured on the worker node as required, accounting for any other workloads which may be scheduled on the same node and which also require them. For example:
echo 1024 | sudo tee /sys/kernel/mm/hugepages/hugepages-2048kB/nr_hugepages
This change should also be made persistent across reboots by adding the required value to the file/etc/sysctl.conf like so:
echo vm.nr_hugepages = 1024 | sudo tee -a /etc/sysctl.conf
If you modify the Huge Page configuration of a node, you MUST either restart kubelet or reboot the node. Mayastor will not deploy correctly if the available Huge Page count as reported by the node's kubelet instance does not satisfy the minimum requirements.

Label Mayastor Node Candidates

All worker nodes which will have Mayastor pods running on them must be labelled with the OpenEBS engine type "mayastor". This label will be used as a node selector by the Mayastor Daemonset, which is deployed as a part of the Mayastor data plane components installation. To add this label to a node, execute:
kubectl label node <node_name>