Dieses Dokument wurde mithilfe automatisierter maschineller Übersetzungstechnologie übersetzt. Wir bemühen uns um korrekte Übersetzungen, übernehmen jedoch keine Gewähr für die Vollständigkeit, Richtigkeit oder Zuverlässigkeit der übersetzten Inhalte. Im Falle von Abweichungen ist die englische Originalversion maßgebend und stellt den verbindlichen Text dar.

Erstellen eines Volumes

Erstellen Sie ein leeres Volume

UI

Header-Bereich

  1. Setzen Sie das Volume Name.

  2. (Optional) Geben Sie ein Description für das Volume an.

Basics-Registerkarte

  1. Wählen Sie New in Source aus.

  2. Wählen Sie einen vorhandenen StorageClass aus.

  3. Konfigurieren Sie das Size des Volumes.

    leeres Volume erstellen
  • Wenn die Replikatanzahl der ausgewählten StorageClass 1 beträgt und das Volume an eine virtuelle Maschine angehängt ist, wird die virtuelle Maschine als nicht migrierbar betrachtet.

  • Wenn ein Volume erstellt wird, werden die zugehörigen Parameter von der ausgewählten StorageClass auf sich selbst kopiert. Wenn Sie die Parameter des StorageClass später ändern, werden diese nicht auf das Volume zurückgeschrieben.

Überdimensionierte Volumes

In SUSE Virtualization v1.5.0, das SUSE Storage v1.8.1 verwendet, werden überdimensionierte Volumes (zum Beispiel 999999 Gi groß) als Nicht bereit markiert und können nicht gelöscht werden.

Gehen Sie wie folgt vor, um dieses Problem zu beheben:

  1. Entfernen Sie vorübergehend die PVC-Webhook-Regel.

    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. Warten Sie, bis das zugehörige PVC gelöscht wurde.

  3. Stellen Sie die PVC-Webhook-Regel wieder her, um die Validierung wieder zu aktivieren.

    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"}}]'

Das Problem wird in SUSE Storage v1.8.2 behoben, das wahrscheinlich in SUSE Virtualization v1.5.1 enthalten sein wird.

Zugehörige Probleme: #8096 und #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

Verwenden Sie die StorageClasses vmstate-persistence und longhorn-static nicht, wenn Sie neue Volumes erstellen. vmstate-persistence wird für TPM- und UEFI-Persistenz verwendet, während longhorn-static für die Verwaltung vorhandener SUSE Storage Volumes verwendet wird.

Terraform

Um ein leeres Volume auf SUSE Virtualization mit Terraform unter Verwendung des Harvester Terraform Providers zu erstellen, definieren Sie einen harvester_volume Ressourcenblock:

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

  size = "10Gi"
}

Erstellen Sie ein Image-Volume

  • UI

  • API

  • Terraform

Header-Bereich

  1. Setzen Sie das Volume Name.

  2. (Optional) Geben Sie ein Description für das Volume an.

Basics-Registerkarte

  1. Wählen Sie VM Image in Source aus.

  2. Wählen Sie einen vorhandenen Image aus.

  3. Konfigurieren Sie das Size des Volumes.

    Beim Erstellen von Volumes aus einem VM-Image stellen Sie sicher, dass die Volumengröße größer oder gleich der Bildgröße ist. Das Volume kann beschädigt werden, wenn die konfigurierte Volumengröße kleiner ist als die Größe des zugrunde liegenden Images. Dies ist besonders wichtig für qcow2-Images, da die virtuelle Größe typischerweise größer ist als die physische Größe. Standardmäßig wird SUSE Virtualization die Volumengröße auf die virtuelle Größe des Images setzen.

    Image-Volume erstellen

Erstellen Sie ein Volume, das mit den Inhalten des Images image-8rb2z aus dem Namespace default initialisiert wird:

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

Um ein Volume auf SUSE Virtualization mit Terraform zu erstellen und es mit den Inhalten eines Images zu initialisieren, definieren Sie einen harvester_volume Ressourcenblock und setzen Sie die image Eigenschaft:

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

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