Este documento foi traduzido usando tecnologia de tradução automática de máquina. Sempre trabalhamos para apresentar traduções precisas, mas não oferecemos nenhuma garantia em relação à integridade, precisão ou confiabilidade do conteúdo traduzido. Em caso de qualquer discrepância, a versão original em inglês prevalecerá e constituirá o texto official.

Criar um Volume

Criar um Volume Vazio

UI

Seção de Cabeçalho

  1. Defina o Volume Name.

  2. (Opcional) Forneça um Description para o Volume.

Aba Básica

  1. Escolha New em Source.

  2. Selecione um StorageClass existente.

  3. Configure o Size do volume.

    criar volume vazio
  • Se a contagem de réplicas da StorageClass selecionada for 1 e o volume estiver anexado a uma máquina virtual, então a máquina virtual é considerada não migrável.

  • Quando um volume é criado, ele copia os parâmetros relacionados da StorageClass selecionada para si mesmo. Se você alterar os parâmetros do StorageClass mais tarde, isso não será gravado de volta no volume.

Volumes Superdimensionados

Na SUSE Virtualization v1.5.0, que usa SUSE Storage v1.8.1, volumes superdimensionados (por exemplo, 999999 Gi de tamanho) são marcados como Não Pronto e não podem ser excluídos.

Para solucionar esse problema, siga estas etapas:

  1. Remova temporariamente a regra do 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. Aguarde a exclusão do PVC relacionado.

  3. Restaure a regra do webhook PVC para reabilitar a validação.

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

O problema será resolvido na SUSE Storage v1.8.2, que provavelmente será incluído na SUSE Virtualization v1.5.1.

Problemas relacionados: #8096 e #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

Não utilize as StorageClasses vmstate-persistence e longhorn-static ao criar novos volumes. vmstate-persistence é usado para persistência TPM e UEFI, enquanto longhorn-static é usado para gerenciamento de volumes SUSE Storage existentes.

Terraform

Para criar um volume vazio em SUSE Virtualization com Terraform usando o Harvester Terraform Provider, defina um bloco de recurso harvester_volume:

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

  size = "10Gi"
}

Criar um Volume de Imagem

  • UI

  • API

  • Terraform

Seção de Cabeçalho

  1. Defina o Volume Name.

  2. (Opcional) Forneça um Description para o Volume.

Aba Básica

  1. Escolha VM Image em Source.

  2. Selecione um Image existente.

  3. Configure o Size do volume.

    Ao criar volumes a partir de uma imagem de VM, certifique-se de que o tamanho do volume seja maior ou igual ao tamanho da imagem. O volume pode ficar corrompido se o tamanho do volume configurado for menor que o tamanho da imagem subjacente. Isso é particularmente importante para imagens qcow2 porque o tamanho virtual é tipicamente maior que o tamanho físico. Por padrão, SUSE Virtualization definirá o tamanho do volume para o tamanho virtual da imagem.

    criar volume de imagem

Criar um volume, inicializado com o conteúdo da imagem image-8rb2z do namespace 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

Para criar um volume em SUSE Virtualization usando Terraform e inicializá-lo com o conteúdo de uma imagem, defina um bloco de recurso harvester_volume e defina a propriedade image:

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

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