Ce document a été traduit à l'aide d'une technologie de traduction automatique. Bien que nous nous efforcions de fournir des traductions exactes, nous ne fournissons aucune garantie quant à l'exhaustivité, l'exactitude ou la fiabilité du contenu traduit. En cas de divergence, la version originale anglaise prévaut et fait foi.

Création d’un volume

Créer un volume vide

UI

Section d’en-tête

  1. Définir le volume Name.

  2. (Optionnel) Fournir un Description pour le volume.

Onglet de base

  1. Choisir New dans Source.

  2. Sélectionner un StorageClass existant.

  3. Configurer le Size du volume.

    créer un volume vide
  • Si le nombre de répliques de la StorageClass sélectionnée est 1 et que le volume est attaché à une machine virtuelle, alors la machine virtuelle est considérée comme non-migrable.

  • Lorsqu’un volume est créé, il copie les paramètres associés de la StorageClass sélectionnée vers lui-même. Si vous modifiez les paramètres du StorageClass plus tard, cela ne s’écrit pas dans le volume.

Volumes surdimensionnés

Dans SUSE Virtualization v1.5.0, qui utilise SUSE Storage v1.8.1, les volumes surdimensionnés (par exemple, 999999 Gi de taille) sont marqués Non prêts et ne peuvent pas être supprimés.

Pour résoudre ce problème, procédez comme suit :

  1. Supprimer temporairement la règle de webhook PVC.

    RULE_INDEX=$(kubectl get \
      validatingwebhookconfiguration longhorn-webhook-validator -o json \
      | jq '.webhooks[0].rules | map(.resources[0] == "persistentvolumeclaims") | index(true)')
    
    if [ -n "$RULE_INDEX" -a "$RULE_INDEX" != "null" ]; then
      kubectl patch validatingwebhookconfiguration longhorn-webhook-validator \
        --type='json' \
        -p="[{'op': 'remove', 'path': '/webhooks/0/rules/$RULE_INDEX'}]"
    fi
  2. Attendre que le PVC associé soit supprimé.

  3. Restaurer la règle de webhook PVC pour réactiver la validation.

    kubectl patch validatingwebhookconfiguration longhorn-webhook-validator \
      --type='json' \
      -p='[{"op": "add", "path": "/webhooks/0/rules/-", "value": {"apiGroups":[""],"apiVersions":["v1"],"operations":["UPDATE"],"resources":["persistentvolumeclaims"],"scope":"Namespaced"}}]'

Le problème sera résolu dans SUSE Storage v1.8.2, qui sera probablement inclus dans SUSE Virtualization v1.5.1.

Problèmes connexes : #8096 et #10741

API
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  annotations:
    volume.beta.kubernetes.io/storage-provisioner: driver.longhorn.io
    volume.kubernetes.io/storage-provisioner: driver.longhorn.io
  name: my-vol
  namespace: default
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 10Gi
  volumeMode: Block
  volumeName: pvc-my-vol

Ne pas utiliser les StorageClasses vmstate-persistence et longhorn-static lors de la création de nouveaux volumes. vmstate-persistence est utilisé pour la persistance TPM et UEFI, tandis que longhorn-static est utilisé pour la gestion des volumes SUSE Storage existants.

Terraform

Pour créer un volume vide sur SUSE Virtualization avec Terraform en utilisant le Harvester Terraform Provider, définissez un bloc de ressources harvester_volume :

resource "harvester_volume" "empty-volume" {
  name      = "empty-volume"
  namespace = "default"

  size = "10Gi"
}

Créer un volume d’image

  • UI

  • API

  • Terraform

Section d’en-tête

  1. Définir le volume Name.

  2. (Optionnel) Fournir un Description pour le volume.

Onglet de base

  1. Choisir VM Image dans Source.

  2. Sélectionner un Image existant.

  3. Configurer le Size du volume.

    Lors de la création de volumes à partir d’une image de machine virtuelle, assurez-vous que la taille du volume est supérieure ou égale à la taille de l’image. Le volume peut devenir corrompu si la taille du volume configurée est inférieure à la taille de l’image sous-jacente. Ceci est particulièrement important pour les images qcow2 car la taille virtuelle est généralement supérieure à la taille physique. Par défaut, SUSE Virtualization définira la taille du volume sur la taille virtuelle de l’image.

    créer un volume d’image

Créer un volume, initialisé avec le contenu de l’image image-8rb2z de l’espace de noms default :

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  annotations:
    harvesterhci.io/imageId: default/image-8rb2z
    volume.beta.kubernetes.io/storage-provisioner: driver.longhorn.io
    volume.kubernetes.io/storage-provisioner: driver.longhorn.io
  name: foobar
  namespace: default
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 5Gi
  storageClassName: longhorn-image-8rb2z
  volumeMode: Block
  volumeName: pvc-foobar

Pour créer un volume sur SUSE Virtualization en utilisant Terraform et l’initialiser avec le contenu d’une image, définissez un bloc de ressources harvester_volume et définissez la propriété image :

resource "harvester_volume" "opensuse154-image-disk" {
  name      = "opensuse154-image-disk"
  namespace = "default"

  size  = "10Gi"
  image = harvester_image.opensuse154.id
}