Étiquettes de stockage

Présentation

La fonctionnalité d’étiquettes de stockage permet d’utiliser uniquement certains nœuds ou disques pour stocker les données des volumes Longhorn. Par exemple, les données sensibles à la performance peuvent utiliser uniquement les disques haute performance qui peuvent être étiquetés comme fast, ssd ou nvme, ou uniquement le nœud haute performance étiqueté comme baremetal.

Cette fonctionnalité prend en charge à la fois les disques et les nœuds.

Installation

Les étiquettes peuvent être configurées à l’aide de l’interface utilisateur Longhorn :

  1. Nœud -> Sélectionner un nœud -> Modifier le nœud et les disques

  2. Cliquez sur +Nouvelle étiquette de nœud ou +Nouvelle étiquette de disque pour ajouter de nouvelles étiquettes.

Toutes les répliques programmées existantes sur le nœud ou le disque ne seront pas affectées par les nouvelles étiquettes.

Syntaxe

Lorsque plusieurs étiquettes sont spécifiées pour un volume, le disque et le nœud (auquel le disque appartient) doivent avoir toutes les étiquettes spécifiées pour devenir utilisables.

UI

Lors de la création d’un volume, spécifiez l’étiquette de disque et l’étiquette de nœud dans l’interface utilisateur.

Kubernetes

Utilisez les paramètres StorageClass de Kubernetes pour spécifier les étiquettes.

Vous pouvez spécifier des étiquettes dans la StorageClass Longhorn par défaut en ajoutant le paramètre nodeSelector: "storage,fast" dans le ConfigMap nommé longhorn-storageclass. Par exemple :

apiVersion: v1
kind: ConfigMap
data:
  storageclass.yaml: |
    kind: StorageClass
    apiVersion: storage.k8s.io/v1
    metadata:
      name: longhorn
      annotations:
        storageclass.kubernetes.io/is-default-class: "true"
    provisioner: driver.longhorn.io
    allowVolumeExpansion: true
    reclaimPolicy: "Delete"
    volumeBindingMode: Immediate
    parameters:
      numberOfReplicas: "3"
      staleReplicaTimeout: "480"
      diskSelector: "ssd"
      nodeSelector: "storage,fast"

Si Longhorn est installé via Helm, vous pouvez y parvenir en modifiant persistence.defaultNodeSelector dans values.yaml.

Alternativement, un paramètre storageClass personnalisé peut être utilisé, par exemple :

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: longhorn-fast
provisioner: driver.longhorn.io
parameters:
  numberOfReplicas: "3"
  staleReplicaTimeout: "480" # 8 hours in minutes
  diskSelector: "ssd"
  nodeSelector: "storage,fast"