In this Quickstart guide we demonstrate deploying Mayastor by using the Kubernetes manifest files provided within the
deployfolder of the Mayastor project's GitHub repository. The repository is configured for the GitFlow release pattern, wherein the master branch contains official releases. By extension, the head of the master branch represents the latest official release.
The steps and commands which follow are intended only for use with, and tested against, the latest release. Earlier releases or development versions may require a modified or different installation process.
kubectl create namespace mayastor
kubectl create -f https://raw.githubusercontent.com/openebs/Mayastor/master/deploy/moac-rbac.yaml
serviceaccount/moac createdclusterrole.rbac.authorization.k8s.io/moac createdclusterrolebinding.rbac.authorization.k8s.io/moac created
kubectl apply -f https://raw.githubusercontent.com/openebs/Mayastor/master/csi/moac/crds/mayastorpool.yaml
Mayastor uses NATS, an Open Source messaging system, as an event bus for some aspects of control plane operations, such as registering Mayastor nodes with MOAC (Mayastor's primary control plane component).
kubectl apply -f https://raw.githubusercontent.com/openebs/Mayastor/master/deploy/nats-deployment.yaml
Verify that the deployment of the NATS application to the cluster was successful. Within the mayastor namespace there should be a single pod having a name starting with "nats-", and with a reported status of Running.
kubectl -n mayastor get pods --selector=app=nats
NAME READY STATUS RESTARTS AGEnats-b4cbb6c96-nbp75 1/1 Running 0 28s
Mayastor uses etcd, a distributed, reliable key-value store, to persist runtime configuration. The steps described below deploy a limited etcd cluster instance which can be used in conjunction with Mayastor for the purposes of this quickstart guide's testing scenarios.
By default, the example given does not perisist the etcd data on stable storage.
kubectl apply -f https://raw.githubusercontent.com/openebs/Mayastor/master/deploy/etcd/statefulset.yamlkubectl apply -f https://raw.githubusercontent.com/openebs/Mayastor/master/deploy/etcd/svc.yamlkubectl apply -f https://raw.githubusercontent.com/openebs/Mayastor/master/deploy/etcd/svc-headless.yaml
Verify that the deployment of etcd to the cluster was successful. Within the mayastor namespace there should be 3 pods having a name starting with "mayastor-etcd-", and with a reported status of "Running".
kubectl -n mayastor get pods --selector=app.kubernetes.io/name=etcd
NAME READY STATUS RESTARTS AGEmayastor-etcd-0 1/1 Running 0 24mmayastor-etcd-1 1/1 Running 0 24mmayastor-etcd-2 1/1 Running 0 24m
kubectl apply -f https://raw.githubusercontent.com/openebs/Mayastor/master/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 AGEmayastor-csi 3 3 3 3 3 kubernetes.io/arch=amd64 26m
kubectl apply -f https://raw.githubusercontent.com/openebs/Mayastor/master/deploy/moac-deployment.yaml
Verify that the MOAC control plane pod is running.
kubectl get pods -n mayastor --selector=app=moac
NAME READY STATUS RESTARTS AGEmoac-7d487fd5b5-9hj62 3/3 Running 0 8m4s
kubectl apply -f https://raw.githubusercontent.com/openebs/Mayastor/master/deploy/mayastor-daemonset.yaml
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 "Preparing the Cluster" stage).
kubectl -n mayastor get daemonset mayastor
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGEmayastor 3 3 3 3 3 kubernetes.io/arch=amd64,openebs.io/engine=mayastor 108s
For each resulting Mayastor pod instance, a Mayastor Node (MSN) custom resource definition should be created. List these definitions and verify that the count meets the expected number and that all nodes are reporting their State as
kubectl -n mayastor get msn
NAME STATE AGEaks-agentpool-12194210-0 online 8m18saks-agentpool-12194210-1 online 8m19saks-agentpool-12194210-2 online 8m15s