Mayastor User Reference
version/1.0
version/1.0
  • Welcome to Mayastor!
  • Release Notes
    • Release History
  • Quickstart
    • Scope
    • Prerequisites
    • Preparing the Cluster
    • Deploy Mayastor
    • Configure Mayastor
    • Deploy a Test Application
    • Tips and Tricks
    • Performance Tips
    • Basic Troubleshooting
    • FAQs
    • Known Limitations
    • Known Issues
  • Reference
    • Basic Architecture
    • I/O Path Description
    • Replica Operations
    • Operations
    • Storage Class Parameters
    • Mayastor Kubectl Plugin
    • Tested Third Party Software
  • Mayastor A-Z
    • Glossary A-E
    • Glossary F-K
    • Glossary L-P
    • Glossary Q-Z
Powered by GitBook
On this page
  • Overview
  • Create Mayastor Application Resources
  • Namespace
  • RBAC Resources
  • Custom Resource Definitions
  • Deploy Mayastor Dependencies
  • NATS
  • etcd
  • Deploy Mayastor Components
  • CSI Node Plugin
  • Control Plane
  • Core Agents
  • REST
  • CSI Controller
  • MSP Operator
  • Data Plane

Was this helpful?

Export as PDF
  1. Quickstart

Deploy Mayastor

PreviousPreparing the ClusterNextConfigure Mayastor

Last updated 10 months ago

Was this helpful?

This website/page will be End-of-life (EOL) after 31 August 2024. We recommend you to visit for the latest Mayastor documentation (v2.6 and above).

Mayastor is now also referred to as OpenEBS Replicated PV Mayastor.

Overview

Before deploying and using Mayastor please consult the section of this guide.

In this Quickstart guide we demonstrate deploying Mayastor by using the Kubernetes manifest files provided within the project's repositories (, ). These repositories are configured for the GitFlow release model, wherein the master branch contains official releases. By extension, the head of the master branch represents the latest official release. Previous releases are identifiable by their annotated git tags.

The steps and commands which follow are intended only for use with, and have only be tested against, the latest release for version 1.x. Earlier releases or development versions may require a modified or different installation process and will require that the manifest files appropriate to that specific release are used. These are available in the repositories named above - use the files from the tagged commit appropriate to the release you wish to deploy.

Create Mayastor Application Resources

Namespace

kubectl create namespace mayastor

RBAC Resources

kubectl apply -f https://raw.githubusercontent.com/openebs/mayastor-control-plane/v1.0.5/deploy/operator-rbac.yaml
serviceaccount/mayastor-service-account created
clusterrole.rbac.authorization.k8s.io/mayastor-cluster-role created
clusterrolebinding.rbac.authorization.k8s.io/mayastor-cluster-role-binding created

Custom Resource Definitions

kubectl apply -f https://raw.githubusercontent.com/openebs/mayastor-control-plane/v1.0.5/deploy/mayastorpoolcrd.yaml

Deploy Mayastor Dependencies

NATS

kubectl apply -f https://raw.githubusercontent.com/openebs/mayastor/v1.0.5/deploy/nats-deployment.yaml

Verify that the deployment of the NATS application to the cluster was successful. Within the mayastor namespace ensure that there are 3 replicas with the name "nats-x", and with a reported status of "Running".

kubectl -n mayastor get pods --selector=app=nats
NAME     READY   STATUS    RESTARTS   AGE
nats-0   2/2     Running   0          50s
nats-1   2/2     Running   0          30s
nats-2   2/2     Running   0          10s

etcd

To deploy the PersistentVolumes that will be used by the etcd in the next step, execute:

kubectl apply -f https://raw.githubusercontent.com/openebs/mayastor/v1.0.5/deploy/etcd/storage/localpv.yaml
kubectl apply -f https://raw.githubusercontent.com/openebs/mayastor/v1.0.5/deploy/etcd/statefulset.yaml 
kubectl apply -f https://raw.githubusercontent.com/openebs/mayastor/v1.0.5/deploy/etcd/svc.yaml
kubectl apply -f https://raw.githubusercontent.com/openebs/mayastor/v1.0.5/deploy/etcd/svc-headless.yaml

Verify that the deployment of etcd to the cluster was successful. Within the mayastor namespace there should be 3 replicas with a name of the form "mayastor-etcd-" and with a reported status of "Running".

kubectl -n mayastor get pods --selector=app.kubernetes.io/name=etcd
NAME              READY   STATUS    RESTARTS   AGE
mayastor-etcd-0   1/1     Running   0          70m
mayastor-etcd-1   1/1     Running   0          70m
mayastor-etcd-2   1/1     Running   0          70m

Deploy Mayastor Components

CSI Node Plugin

kubectl apply -f https://raw.githubusercontent.com/openebs/mayastor/v1.0.5/deploy/csi-daemonset.yaml

Verify that the CSI Node Plugin DaemonSet has been correctly deployed to all worker nodes in the cluster.

kubectl -n mayastor get daemonset mayastor-csi
NAME           DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR              AGE
mayastor-csi   3         3         3       3            3           kubernetes.io/arch=amd64   26m

Control Plane

Core Agents

kubectl apply -f https://raw.githubusercontent.com/openebs/mayastor-control-plane/v1.0.5/deploy/core-agents-deployment.yaml

Verify that the core agent pod is running.

kubectl get pods -n mayastor --selector=app=core-agents
NAME                           READY   STATUS    RESTARTS   AGE
core-agents-5f4d9f786b-6vvxc   1/1     Running   0          117s

REST

kubectl apply -f https://raw.githubusercontent.com/openebs/mayastor-control-plane/v1.0.5/deploy/rest-deployment.yaml
kubectl apply -f https://raw.githubusercontent.com/openebs/mayastor-control-plane/v1.0.5/deploy/rest-service.yaml
deployment.apps/rest created
service/rest created

Verify that the REST pod is running.

kubectl get pods -n mayastor --selector=app=rest
NAME                    READY   STATUS    RESTARTS   AGE
rest-5cd9665499-cdgmm   1/1     Running   0          2m35s

CSI Controller

kubectl apply -f https://raw.githubusercontent.com/openebs/mayastor-control-plane/v1.0.5/deploy/csi-deployment.yaml

Verify that the CSI-controller pod is running.

kubectl get pods -n mayastor --selector=app=csi-controller
NAME                             READY   STATUS    RESTARTS   AGE
csi-controller-579f77f64-7dq7g   3/3     Running   0          39m

MSP Operator

kubectl apply -f https://raw.githubusercontent.com/openebs/mayastor-control-plane/v1.0.5/deploy/msp-deployment.yaml

Verify that the pool operator pod is running.

kubectl get pods -n mayastor --selector=app=msp-operator
NAME                            READY   STATUS    RESTARTS   AGE
msp-operator-7849d59fcd-mcw5b   1/1     Running   0          21s

Data Plane

kubectl apply -f https://raw.githubusercontent.com/openebs/mayastor/v1.0.5/deploy/mayastor-daemonset.yaml
kubectl -n mayastor get daemonset mayastor
NAME       DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR                                         AGE
mayastor   3         3         3       3            3           kubernetes.io/arch=amd64,openebs.io/engine=mayastor   108s
kubectl mayastor get nodes
NAME                       STATE    AGE
aks-agentpool-12194210-0   online   8m18s
aks-agentpool-12194210-1   online   8m19s
aks-agentpool-12194210-2   online   8m15s

Mayastor uses , an Open Source messaging system, as an event bus for some aspects of control plane operations.

Mayastor uses , a distributed, reliable key-value store, to persist configuration. The steps described below deploy a dedicated, clustered etcd instance for Mayastor's own use. This is the only configuration supported by this release.

Verify that the Mayastor DaemonSet has been correctly deployed. The reported Desired, Ready and Available instance counts should be equal, and should match the count of worker nodes which carry the label openebs.io/engine=mayastor (as performed earlier in the "" stage).

The number and status of mayastor pods can be observed by using the . Check that the expected number of nodes are reporting their State as online

OpenEBS Documentation
Known Issues
control plane components
data plane components
NATS
etcd
Mayastor kubectl plugin
Preparing the Cluster