Saltar al contenido principal
Versión: Next

Tu primer volumen

1. Crear un pool​

Un SDSClusterPool indica qué discos de cada nodo se usan para el almacenamiento. Usa rutas estables (/dev/disk/by-id/...) o direcciones PCI para NVMe.

apiVersion: quasarsds.io/v1
kind: SDSClusterPool
metadata:
name: fast-pool
spec:
checksumProtection: true
nodes:
- nodeName: nodo-a
raidType: raid1
disks:
- { path: /dev/disk/by-id/<disco-1>, driver: uring }
- { path: /dev/disk/by-id/<disco-2>, driver: uring }
- nodeName: nodo-b
raidType: none
disks:
- { path: "0000:1b:00.0", driver: nvme }
- nodeName: nodo-c
raidType: none
disks:
- { path: "0000:1b:00.0", driver: nvme }

raidType define el RAID local dentro de cada nodo: none, raid0, raid1 o raid5. Es independiente de la replicación entre nodos.

kubectl apply -f pool.yaml
kubectl get sdsclusterpool fast-pool

Espera a que todos los nodos del pool estén en fase Ready.

2. Crear una 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. Crear un PVC y usarlo​

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mi-volumen
spec:
accessModes: [ReadWriteOnce]
storageClassName: quasarsds-rf3
resources:
requests:
storage: 10Gi
---
apiVersion: v1
kind: Pod
metadata:
name: prueba
spec:
containers:
- name: app
image: busybox
command: ["sh", "-c", "echo hola > /data/prueba && sleep 3600"]
volumeMounts:
- { name: datos, mountPath: /data }
volumes:
- name: datos
persistentVolumeClaim:
claimName: mi-volumen
kubectl get pvc mi-volumen
kubectl get sdsvolumes -n quasarsds-system