Your first volume
1. Create a pool
An SDSClusterPool specifies which drives on each node are used for storage. Use stable paths (/dev/disk/by-id/...) or, for NVMe, PCI addresses.
apiVersion: quasarsds.io/v1
kind: SDSClusterPool
metadata:
name: fast-pool
spec:
checksumProtection: true
nodes:
- nodeName: node-a
raidType: raid1
disks:
- { path: /dev/disk/by-id/<disk-1>, driver: uring }
- { path: /dev/disk/by-id/<disk-2>, driver: uring }
- nodeName: node-b
raidType: none
disks:
- { path: "0000:1b:00.0", driver: nvme }
- nodeName: node-c
raidType: none
disks:
- { path: "0000:1b:00.0", driver: nvme }
raidType sets the local RAID inside each node: none, raid0, raid1 or raid5. It is independent of replication across nodes.
kubectl apply -f pool.yaml
kubectl get sdsclusterpool fast-pool
Wait until every node in the pool is in the Ready phase.
2. Create a StorageClass
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: quasarsds-rf3
provisioner: quasarsds.io
reclaimPolicy: Delete
allowVolumeExpansion: true
volumeBindingMode: WaitForFirstConsumer
parameters:
poolName: fast-pool
strategy: RF3
3. Create a PVC and use it
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-volume
spec:
accessModes: [ReadWriteOnce]
storageClassName: quasarsds-rf3
resources:
requests:
storage: 10Gi
---
apiVersion: v1
kind: Pod
metadata:
name: test
spec:
containers:
- name: app
image: busybox
command: ["sh", "-c", "echo hello > /data/test && sleep 3600"]
volumeMounts:
- { name: data, mountPath: /data }
volumes:
- name: data
persistentVolumeClaim:
claimName: my-volume
kubectl get pvc my-volume
kubectl get sdsvolumes -n quasarsds-system