/ k8s-storage / devel / quick-start/

Quick Start

NOTE: This document is written with the focus to have a single document which can fit both new-comers to k8s ecosystem, and also those who know the system. If you are well versed with k8s yaml files, and can manage using 'kubectl' directly, you can use kadalu without python3 dependency, directly using yaml files. Check this document for more details.

Download the latest release of Kadalu Kubectl plugin using,

curl -LO https://github.com/kadalu/kadalu/releases/download/0.8.0/kubectl-kadalu

Make the kubectl binary executable.

$ chmod +x ./kubectl-kadalu

Move the binary in to your PATH.

$ sudo mv ./kubectl-kadalu /usr/local/bin/kubectl-kadalu

Note: In the case of Openshift,

$ sudo mv ./kubectl-kadalu /usr/local/bin/oc-kadalu

Test to ensure the version you installed is up-to-date

$ kubectl-kadalu version

Deploy KaDalu Operator using,

$ kubectl kadalu install

In the case of OpenShift, deploy Kadalu Operator using,

$ oc kadalu install --type=openshift

Note: Security Context Constraints can be applied only by admins, Run oc login -u system:admin to login as admin

Identify the devices available from nodes and run the following command to add storage to Kadalu.

Note: if your host is running RHEL/CentOS 7.x series or Ubuntu/Debian older than 18.04, you may need to do below tasks before adding storage to kadalu.

$ # On CentOS7.x/Ubuntu-16.04
$ sudo dd if=/dev/zero of=/dev/sdc bs=512 count=1
$ sudo mkfs.xfs /dev/sdc

Once the device is ready, add it to kadalu pool.

$ kubectl kadalu storage-add storage-pool-1 \
    --device kube1:/dev/sdc

Operator will start the storage export pods as required. And, in 2 steps, your storage system is up and running.

Check the status of Pods using,

$ kubectl get pods -n kadalu
NAME                             READY   STATUS    RESTARTS   AGE
server-storage-pool-1-kube1-0    1/1     Running   0          84s
csi-attacher-0                   2/2     Running   0          30m
csi-nodeplugin-5hfms             2/2     Running   0          30m
csi-nodeplugin-924cc             2/2     Running   0          30m
csi-nodeplugin-cbjl9             2/2     Running   0          30m
csi-provisioner-0                3/3     Running   0          30m
operator-6dfb65dcdd-r664t        1/1     Running   0          30m

CSI to claim Persistent Volumes (PVC/PV)

Now we are ready to create Persistent volumes and use them in application Pods.

# File: sample-pvc.yaml
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: pv1
spec:
  storageClassName: kadalu.replica1
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 1Gi

Create PVC using,

$ kubectl apply -f sample-pvc.yaml
persistentvolumeclaim/pv1 created

and check the status of PVC using,

$ kubectl get pvc
NAME   STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS     AGE
pv1    Bound    pvc-8cbe80f1-428f-11e9-b31e-525400f59aef   1Gi        RWO            kadalu.replica1  42s

Now, this PVC is ready to be consumed in your application pod. You can see the sample usage of PVC in an application pod by below:

# File: sample-app.yaml
---
apiVersion: v1
kind: Pod
metadata:
  name: pod1
  labels:
    app: sample-app
spec:
  containers:
  - name: sample-app
    image: docker.io/kadalu/sample-pv-check-app:latest
    imagePullPolicy: IfNotPresent
    volumeMounts:
    - mountPath: "/mnt/pv"
      name: csivol
  volumes:
  - name: csivol
    persistentVolumeClaim:
      claimName: pv1
  restartPolicy: OnFailure
$ kubectl apply -f sample-app.yaml
pod1 created
© 2021 Kadalu Software Private Limited. All Rights Reserved.