Skip to main content
NetApp virtualization solutions
O português é fornecido por meio de tradução automática para sua conveniência. O inglês precede o português em caso de inconsistências.

Proteja VMs no Red Hat OpenShift Virtualization com instantâneos do Trident Volume Group

Colaboradores banum-netapp

Configure instantâneos de grupo de volume para proteger VMs no Red Hat OpenShift Virtualization usando o Trident 25.06 e o ​​armazenamento NetApp ONTAP . Este procedimento inclui a instalação do Trident com suporte a iSCSI, a configuração de backends e classes de armazenamento ONTAP , a criação de uma VM com vários discos persistentes e a implementação de um snapshot de grupo de volumes que garante que snapshots de todos os discos da VM sejam capturados simultaneamente para operações de recuperação confiáveis.

Volume Group Snapshots é um recurso do Kubernetes que resolve problemas de consistência ao tirar snapshots de vários PersistentVolumeClaims (PVCs) de contêineres ou VMs.

Esse recurso permite que você crie instantâneos consistentes em caso de falhas de vários PVCs simultaneamente. Este recurso é Beta na versão v1.32 do Kubernetes. O Trident oferece suporte a esse recurso Beta a partir da versão 25.06 do Trident (somente para o protocolo iSCSI no momento).

Para oferecer suporte ao recurso Volume Group Snapshots, o Kubernetes apresenta três novos objetos de API:

  • VolumeGroupSnapshotClass: Criado por administradores de cluster para descrever como os snapshots de grupos de volumes devem ser criados.

  • VolumeGroupSnapshot: Solicitado por usuários do Kubernetes para criar um snapshot de grupo de volumes para vários PVCs.

  • VolumeGroupSnapshotContent: Criado pelo controlador de snapshot para VolumeGroupSnapshots criados dinamicamente.

O Trident 25.06 detecta automaticamente novos CRDs (especificados para o recurso Volume Group Snapshot) para habilitar os recursos relevantes nos sidecars do Trident CSI.

Observação O Trident suporta instantâneos de grupo de volume somente para o protocolo iSCSI na versão 25.06.

Etapa 1: Instale o OpenShift 4.19 e habilite o FeatureGate para instantâneos de grupos de volume

Instale o cluster OpenShift 4.19 com o Kubernetes versão 1.32. Esta versão eleva o recurso Volume Group Snapshot ao status Beta. Versões posteriores do OpenShift podem incluir versões do Kubernetes além da v1.32, que também oferecem suporte a esse recurso.

Passos
  1. Instale o OpenShift Cluster versão 4.19 seguindo as instruções na documentação do Red Hat: "Instalando o OpenShift Container Platform" .

  2. Verifique a versão do Kubernetes no cluster OpenShift.

    A imagem a seguir mostra o OpenShift Cluster v4.19 instalado com o Kubernetes v1.32.

    Cluster OpenShift com K8s V1.32

  3. Ative o FeatureGate para VolumeGroupSnapshot usando o console da web do OpenShift: Navegue até Administração → Definições de recursos personalizados.

  4. Pesquise e clique em FeatureGate.

  5. Clique na aba Instâncias e selecione a instância Cluster.

  6. Selecione a aba YAML e edite o objeto FeatureGate/cluster para incluir VolumeGroupSnapshot na lista habilitada em customNoUpgrade.

    Habilitar VolumeGroupSnapshot FeatureGate

Etapa 2: instalar e configurar o Trident 25.06 para instantâneos de grupo de volume

O recurso Volume Group Snapshot é suportado pelo Trident apenas para o protocolo iSCSI no Trident 25.06. OBSERVAÇÃO: Você precisa instalar o Trident versão 25.06.1 para habilitar o protocolo iSCSI no OpenShift Cluster 4.19.

Instale o Trident e configure a infraestrutura de armazenamento necessária para habilitar instantâneos de grupos de volumes para suas VMs. Isso inclui configurar uma conexão de backend iSCSI com o ONTAP, definir classes de armazenamento para volumes persistentes de VM e configurar classes de snapshots individuais e de grupo.

Observação É uma prática recomendada ter a classe de armazenamento Trident e a classe de snapshot definidas como padrão para que você possa aproveitar o mecanismo rápido FlexCloning dos snapshots da imagem golden ao criar novas VMs.
Antes de começar
  • Certifique-se de que o Feature Gate esteja ativado para VolumeGroupSnapshots.

  • Use node-prep para instalar ferramentas iSCSI.

Passos
  1. Instale o Trident usando o seguinte comando:

    Instalar o Trident com iscsi nodeprep

  2. Verifique se os CRDs necessários para VolumeGroupSnapshots estão instalados.

    CRDs necessários disponíveis

  3. Crie o backend Trident iSCSI usando a seguinte definição YAML.

    #tbc-iscsi.yaml
    apiVersion: v1
    kind: Secret
    metadata:
      name: tbc-iscsi-secret
    type: Opaque
    stringData:
      username: admin
      password: <passwd to log into ONTAP ClI>
    ---
    apiVersion: trident.netapp.io/v1
    kind: TridentBackendConfig
    metadata:
      name: tbc-iscsi
    spec:
      version: 1
      storageDriverName: ontap-san
      managementLIF: <mgmt-lif>
      backendName: tbc-iscsi
      svm: openshift
      storagePrefix: openshift-iscsi
      defaults:
        formatOptions: "-E nodiscard"
        nameTemplate: "{{ .config.StoragePrefix }}_{{ .volume.Namespace }}_{{ .volume.RequestName }}"
      credentials:
        name: tbc-iscsi-secret
  4. Crie a classe de armazenamento iSCSI usando a seguinte definição YAML.

    # sc-iscsi.yaml
    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: sc-iscsi
    provisioner: csi.trident.netapp.io
    parameters:
      backendType: "ontap-san"
      provisioningType: "thin"
      fsType: ext4
      snapshots: "true"
    reclaimPolicy: "Delete"
    allowVolumeExpansion: true
  5. Crie o objeto VolumeSnapshotClass usando a seguinte definição YAML.

    # snapshotclass.yaml
    apiVersion: snapshot.storage.k8s.io/v1
    kind: VolumeSnapshotClass
    metadata:
      name: trident-snapshotclass
    driver: csi.trident.netapp.io
    deletionPolicy: Retain

    Classe de armazenamento e classe de instantâneo de volume

  6. Defina os padrões para a classe de armazenamento e o VolumeSnapshotClass no cluster.

    kubectl patch storageclass <storage-class-name> -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'
    kubectl patch volumesnapshotclass <volumesnapshotclass-name> --type=merge -p '{"metadata":{"annotations":{"snapshot.storage.kubernetes.io/is-default-class":"true"}}}'
  7. Crie um objeto VolumeGroupSnapshotClass usando a seguinte definição YAML.

    apiVersion: groupsnapshot.storage.k8s.io/v1beta1
    kind: VolumeGroupSnapshotClass
    metadata:
      name: trident-groupsnapshotclass
      annotations:
        kubernetes.io/description: "Trident group snapshot class"
    driver: csi.trident.netapp.io
    deletionPolicy: Delete

    Aula de instantâneo do grupo de volume

Etapa 3: Instale o OpenShift Virtualization e crie uma VM de teste com vários discos

Instale o OpenShift Virtualization Operator para habilitar recursos de gerenciamento de VM no seu cluster. Após a instalação, crie uma VM de teste com vários discos persistentes para demonstrar a funcionalidade de instantâneo do grupo de volumes.

Passos
  1. Instale o OpenShift Virtualization Operator.

    Observação Isso precisa ser feito depois de configurar a classe de armazenamento padrão e a classe Snapshot usando o Trident para que as imagens douradas sejam disponibilizadas como VolumeSnapshots no cluster usando o Trident CSI.
  2. Verifique se as imagens douradas estão nos instantâneos de volume.

    Imagens douradas em instantâneos de volume

  3. Crie uma VM a partir do modelo padrão. Adicione 2 discos adicionais para a VM. (Um disco raiz e 2 discos adicionais).

    VM com 3 PVCs

  4. Verifique os volumes correspondentes no backend do ONTAP .

    O volume do disco raiz é um volume flex-clone do snapshot com a imagem dourada. Os outros 2 volumes para os 2 discos adicionais das VMs são volumes FlexVol .

  5. Efetue login na VM usando a ferramenta virtctl.

  6. Formate e monte os 2 discos conforme mostrado abaixo:

    Discos de VM

Etapa 4: rotular discos de VM para proteção de instantâneo de grupo

Os instantâneos do grupo de volumes usam seletores de rótulos para identificar quais PVCs pertencem juntos, garantindo que todos os discos de VM relacionados sejam capturados simultaneamente no mesmo ponto no tempo.

Passos
  1. Rotule os PVCs usando a mesma chave/valor e verifique.

    #oc label pvc fedora-vm1 consistencygroup=group1
    persistentvolumeclaim/fedora-vm1 labeled
    # oc label pvc dv-fedora-vm1-disk1-ulsgg2 consistencygroup=group1
    persistentvolumeclaim/dv-fedora-vm1-disk1-ulsgg2 labeled
    # oc label pvc dv-fedora-vm1-disk2-86oq76 consistencygroup=group1
    persistentvolumeclaim/dv-fedora-vm1-disk2-86oq76 labeled
  2. Verifique os rótulos dos PVCs.

    # oc get pvc fedora-vm1 -o jsonpath='{.metadata.labels.consistencygroup'}
    group1
    # oc get pvc dv-fedora-vm1-disk1-ulsgg2 -o jsonpath='{.metadata.labels.consistencygroup'}
    group1
    # oc get pvc dv-fedora-vm1-disk2-86oq76 -o jsonpath='{.metadata.labels.consistencygroup'}
    group1
  3. Crie um VolumeGroupSnapshot que descubra automaticamente todos os PVCs rotulados usando a seguinte definição YAML.

    #vgs.yaml
    apiVersion: groupsnapshot.storage.k8s.io/v1beta1
    kind: VolumeGroupSnapshot
    metadata:
      name: vgs1
    spec:
      volumeGroupSnapshotClassName: trident-groupsnapshotclass
      source:
        selector:
          matchLabels:
            consistencygroup: group1
    # oc create -f vgs1.yaml
    volumegroupsnapshot.groupsnapshot.storage.k8s.io/vgs1 created

    VGS criado

    Resultado

    Um instantâneo de todos os PVCs com o par chave/valor de rótulo consistencygroup: group1 será criado. O Trident VolumeGroupSnapshots usa o grupo de consistência ONTAP no backend ONTAP .

Observação O Trident VolumeGroupSnapshots usa o grupo de consistência (CG) ONTAP no backend ONTAP . Se você usar a API REST, um CG será criado com todos os volumes pertencentes à VM (agrupados pelos rótulos), um instantâneo de cada volume será tirado de forma consistente e, em seguida, o CG será excluído. Você pode ou não conseguir ver o grupo de consistência sendo criado e excluído no ONTAP, dependendo do momento.

A imagem a seguir mostra o grupo de consistência criado e depois excluído no ONTAP:

Grupo de Consistência ONTAP

Etapa 5: restaurar discos de VM a partir de instantâneos

Esta etapa valida se os snapshots podem recuperar com sucesso os dados da VM quando necessário. Suponha que perdemos o sample.txt arquivo de cada um dos dois discos de dados.

arquivos perdidos

Observação Embora tenhamos criado um instantâneo de um grupo de volumes como uma única unidade, só podemos restaurar a partir de um instantâneo individual.

O Trident fornece restauração rápida de volume no local a partir de um instantâneo usando o TridentActionSnapshotRestore (TASR) CR. Esta CR funciona como uma ação imperativa do Kubernetes e não persiste após a conclusão da operação.

Passos
  1. Pare a VM.

  2. Restaure o conteúdo do primeiro disco/PVC com seu snapshot correspondente usando o YAML, conforme mostrado abaixo.

    # cat tasr1.yaml
    apiVersion: trident.netapp.io/v1
    kind: TridentActionSnapshotRestore
    metadata:
      name: trident-snap-disk1
      namespace: default
    spec:
      pvcName: dv-fedora-vm1-disk1-ulsgg2
      volumeSnapshotName: snapshot-4d47c9f45423bfca625a0f1b6c5a5ec456ac59d3e583157be919bb7237317c65
    # oc create -f tasr1.yaml
    tridentactionsnapshotrestore.trident.netapp.io/trident-snap created
  3. Da mesma forma, crie outro objeto TASR para o segundo disco usando o PVC e seu snapshot correspondente.

    # cat tasr2.yaml
    apiVersion: trident.netapp.io/v1
    kind: TridentActionSnapshotRestore
    metadata:
      name: trident-snap-disk2
      namespace: default
    spec:
      pvcName: dv-fedora-vm1-disk2-86oq76
      volumeSnapshotName: snapshot-afb4c4833460e233c4e86f1108c921b86a6f4d0eb182e99e579081ff6f743f56
    # oc create -f tasr2.yaml
  4. Verifique se a operação de restauração está mostrando estado bem-sucedido.

    TASR teve sucesso

  5. Agora inicie a VM, faça login nela e verifique se o arquivo sample.txt está de volta nos discos.

    instantâneos restaurados