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.

Instantâneo de Volume CSI Associado a um Backup do SUSE® Storage

Os backups no Longhorn são objetos em um backupstore fora do cluster, e o ponto de acesso ao backupstore é o alvo do backup. Para mais informações, consulte esta seção.

Para criar backups programaticamente, você pode usar o mecanismo genérico de VolumeSnapshot do Kubernetes CSI. Para saber mais sobre o mecanismo de VolumeSnapshot do CSI, clique aqui.

Pré-requisitos: O suporte a instantâneos CSI precisa ser habilitado em seu cluster. Se sua distribuição do Kubernetes não fornecer o controlador de instantâneos do Kubernetes, bem como as definições de recursos personalizados relacionadas a instantâneos, você precisará implantá-los manualmente. Para mais informações, consulte Habilitar Suporte a Instantâneos CSI.

Criar um Instantâneo de Volume CSI Associado a um Backup do Longhorn

Para criar um Instantâneo de Volume CSI associado a um backup do Longhorn, você primeiro precisa criar um objeto VolumeSnapshotClass com o parâmetro type definido como bak da seguinte forma:

kind: VolumeSnapshotClass
apiVersion: snapshot.storage.k8s.io/v1
metadata:
  name: longhorn-backup-vsc
driver: driver.longhorn.io
deletionPolicy: Delete
parameters:
  type: bak
  backupMode: full

O Longhorn realiza backups incrementais por padrão. Adicione o parâmetro backupMode: full para criar um backup completo. Para mais informações sobre backupMode, consulte Criar um Backup.

Para mais informações sobre VolumeSnapshotClass, consulte a documentação do Kubernetes para Classes de VolumeSnapshot.

Depois disso, crie um objeto Kubernetes VolumeSnapshot com volumeSnapshotClassName apontando para o nome do VolumeSnapshotClass (longhorn-backup-vsc) e source apontando para o PVC do volume Longhorn para o qual um backup deve ser criado.

apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshot
metadata:
  name: test-csi-volume-snapshot-longhorn-backup
spec:
  volumeSnapshotClassName: longhorn-backup-vsc
  source:
    persistentVolumeClaimName: test-vol

Resultado: Um backup é criado. A criação do objeto VolumeSnapshot leva à criação de um objeto Kubernetes VolumeSnapshotContent. O VolumeSnapshotContent refere-se a um backup do Longhorn em seu campo VolumeSnapshotContent.snapshotHandle com o nome bak://backup-volume/backup-name.

Visualizando o Backup

Para ver o backup, clique em Backup na barra de navegação superior e navegue até o volume de backup mencionado em VolumeSnapshotContent.snapshotHandle.

Para informações sobre como restaurar um volume via um objeto VolumeSnapshot, consulte as seções abaixo.

Como o Mecanismo CSI Funciona Neste Cenário

Quando o objeto VolumeSnapshot é criado com kubectl, o campo VolumeSnapshot.uuid é usado para identificar um instantâneo do Longhorn e o objeto VolumeSnapshotContent associado.

Isso cria um novo instantâneo do Longhorn chamado snapshot-uuid.

Em seguida, um backup desse instantâneo é iniciado, e a solicitação CSI retorna.

Depois, um objeto VolumeSnapshotContent chamado snapcontent-uuid é criado.

O sidecar snapshotter CSI consulta periodicamente o plugin CSI Longhorn para avaliar o status do backup.

Uma vez que o backup é concluído, a flag VolumeSnapshotContent.readyToUse é definida como true.

Restaurar PVC de VolumeSnapshot CSI Associado a um Backup do Longhorn

Crie um objeto PersistentVolumeClaim onde o campo dataSource aponta para um objeto VolumeSnapshot existente que está associado ao backup Longhorn.

O csi-provisioner detectará isso e instruirá o driver CSI Longhorn a provisionar um novo volume com os dados do backup associado.

Um exemplo PersistentVolumeClaim está abaixo. O campo dataSource precisa apontar para um objeto VolumeSnapshot existente.

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: test-restore-pvc
spec:
  storageClassName: longhorn
  dataSource:
    name: test-csi-volume-snapshot-longhorn-backup
    kind: VolumeSnapshot
    apiGroup: snapshot.storage.k8s.io
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 5Gi

Observe que o valor spec.resources.requests.storage deve ser o mesmo que o tamanho do objeto VolumeSnapshot.

Restaurar um backup Longhorn que não tem VolumeSnapshot associado

Você pode usar o mecanismo CSI para restaurar backups Longhorn que não foram criados via o mecanismo CSI. Para restaurar backups Longhorn que não foram criados via o mecanismo CSI, você deve primeiro criar manualmente um objeto VolumeSnapshot e um objeto VolumeSnapshotContent para o backup.

Crie um objeto VolumeSnapshotContent com o campo snapshotHandle definido como bak://backup-volume/backup-name.

Os valores backup-volume e backup-name podem ser recuperados da página Backup na interface Longhorn.

apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshotContent
metadata:
  name: test-existing-backup
spec:
  volumeSnapshotClassName: longhorn
  driver: driver.longhorn.io
  deletionPolicy: Delete
  source:
    # NOTE: change this to point to an existing backup on the backupstore
    snapshotHandle: bak://test-vol/backup-625159fb469e492e
  volumeSnapshotRef:
    name: test-snapshot-existing-backup
    namespace: default

Crie o objeto associado VolumeSnapshot com o campo name definido como test-snapshot-existing-backup, onde o campo source se refere a um objeto VolumeSnapshotContent através do campo volumeSnapshotContentName.

Isso difere da criação de um backup, caso em que o campo source se refere a um PerstistentVolumeClaim através do campo persistentVolumeClaimName.

Apenas um tipo de referência pode ser definido para um objeto VolumeSnapshot.

apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshot
metadata:
  name: test-snapshot-existing-backup
spec:
  volumeSnapshotClassName: longhorn
  source:
    volumeSnapshotContentName: test-existing-backup

Agora você pode criar um objeto PerstistantVolumeClaim que se refere ao objeto VolumeSnapshot recém-criado. Para um exemplo, veja Restaurar PVC do Instantâneo de Volume CSI Associado a um Backup do Longhorn acima.