Rechercher

15.3. Sauvegarde des machines virtuelles

download PDF
Important

OADP pour OpenShift Virtualization est une fonctionnalité d'aperçu technologique uniquement. Les fonctionnalités de l'aperçu technologique ne sont pas prises en charge par les accords de niveau de service (SLA) de production de Red Hat et peuvent ne pas être complètes sur le plan fonctionnel. Red Hat ne recommande pas de les utiliser en production. Ces fonctionnalités offrent un accès anticipé aux fonctionnalités des produits à venir, ce qui permet aux clients de tester les fonctionnalités et de fournir des commentaires pendant le processus de développement.

Pour plus d'informations sur la portée de l'assistance des fonctionnalités de l'aperçu technologique de Red Hat, voir Portée de l'assistance des fonctionnalités de l'aperçu technologique.

Vous sauvegardez des machines virtuelles (VM) en créant une ressource personnalisée (CR) OpenShift API for Data Protection (OADP) Backup.

Le CR Backup effectue les actions suivantes :

Note

L'OADP fournit des crochets de sauvegarde pour geler le système de fichiers de la VM avant l'opération de sauvegarde et le dégeler lorsque la sauvegarde est terminée.

Le site kubevirt-controller crée les pods virt-launcher avec des annotations qui permettent à Velero d'exécuter le binaire virt-freezer avant et après l'opération de sauvegarde.

Les API freeze et unfreeze sont des sous-ressources de l'API VM snapshot. Pour plus de détails, voir À propos des instantanés de machines virtuelles.

Vous pouvez ajouter des crochets au CR Backup pour exécuter des commandes sur des machines virtuelles spécifiques avant ou après l'opération de sauvegarde.

Vous planifiez une sauvegarde en créant un CRSchedule au lieu d'un CR Backup.

15.3.1. Création d'un CR de sauvegarde

Vous sauvegardez les images Kubernetes, les images internes et les volumes persistants (PV) en créant une ressource personnalisée (CR) Backup.

Conditions préalables

  • Vous devez installer l'opérateur OpenShift API for Data Protection (OADP).
  • Le CR DataProtectionApplication doit être dans un état Ready.
  • Conditions préalables relatives à l'emplacement de la sauvegarde :

    • Le stockage d'objets S3 doit être configuré pour Velero.
    • Un emplacement de sauvegarde doit être configuré dans le CR DataProtectionApplication.
  • Conditions préalables pour l'emplacement des instantanés :

    • Votre fournisseur de cloud computing doit disposer d'une API d'instantané native ou prendre en charge les instantanés de l'interface de stockage de conteneurs (CSI).
    • Pour les instantanés CSI, vous devez créer un CR VolumeSnapshotClass pour enregistrer le pilote CSI.
    • Un emplacement de volume doit être configuré dans le CR DataProtectionApplication.

Procédure

  1. Récupérez les CR backupStorageLocations en entrant la commande suivante :

    $ oc get backupStorageLocations -n openshift-adp

    Exemple de sortie

    NAMESPACE       NAME              PHASE       LAST VALIDATED   AGE   DEFAULT
    openshift-adp   velero-sample-1   Available   11s              31m

  2. Créez un CR Backup, comme dans l'exemple suivant :

    apiVersion: velero.io/v1
    kind: Backup
    metadata:
      name: <backup>
      labels:
        velero.io/storage-location: default
      namespace: openshift-adp
    spec:
      hooks: {}
      includedNamespaces:
      - <namespace> 1
      includedResources: [] 2
      excludedResources: [] 3
      storageLocation: <velero-sample-1> 4
      ttl: 720h0m0s
      labelSelector: 5
      - matchLabels:
          app=<label_1>
      - matchLabels:
          app=<label_2>
      - matchLabels:
          app=<label_3>
      orlabelSelectors: 6
      - matchLabels:
          app=<label_1>
      - matchLabels:
          app=<label_2>
      - matchLabels:
          app=<label_3>
    1
    Spécifier un tableau d'espaces de noms à sauvegarder.
    2
    Facultatif : Spécifiez un tableau de ressources à inclure dans la sauvegarde. Les ressources peuvent être des raccourcis (par exemple, "po" pour "pods") ou être entièrement qualifiées. Si rien n'est spécifié, toutes les ressources sont incluses.
    3
    Facultatif : Spécifiez un tableau de ressources à exclure de la sauvegarde. Les ressources peuvent être des raccourcis (par exemple, "po" pour "pods") ou être entièrement qualifiées.
    4
    Indiquez le nom du CR backupStorageLocations.
    5
    Sauvegarde des ressources qui ont toutes les étiquettes spécifiées.
    6
    Sauvegarde des ressources qui ont une ou plusieurs des étiquettes spécifiées.
  3. Vérifiez que l'état de la CR Backup est Completed:

    $ oc get backup -n openshift-adp <backup> -o jsonpath='{.status.phase}'

15.3.1.1. Sauvegarde de volumes persistants avec des instantanés CSI

Vous sauvegardez des volumes persistants avec des instantanés de l'interface de stockage de conteneurs (CSI) en modifiant la ressource personnalisée (CR) VolumeSnapshotClass du stockage en nuage avant de créer la CR Backup.

Conditions préalables

  • Le fournisseur de services en nuage doit prendre en charge les instantanés CSI.
  • Vous devez activer le CSI sur le site DataProtectionApplication CR.

Procédure

  • Ajouter la paire clé-valeur metadata.labels.velero.io/csi-volumesnapshot-class: "true" à la CR VolumeSnapshotClass:

    apiVersion: snapshot.storage.k8s.io/v1
    kind: VolumeSnapshotClass
    metadata:
      name: <volume_snapshot_class_name>
      labels:
        velero.io/csi-volumesnapshot-class: "true"
    driver: <csi_driver>
    deletionPolicy: Retain

Vous pouvez maintenant créer un CR Backup.

15.3.1.2. Sauvegarde des applications avec Restic

Vous sauvegardez les ressources Kubernetes, les images internes et les volumes persistants avec Restic en modifiant la ressource personnalisée (CR) Backup.

Il n'est pas nécessaire de spécifier un emplacement d'instantané dans le CR DataProtectionApplication.

Important

Restic ne prend pas en charge la sauvegarde des volumes hostPath. Pour plus d'informations, voir les limitations supplémentaires de Restic.

Conditions préalables

  • Vous devez installer l'opérateur OpenShift API for Data Protection (OADP).
  • Vous ne devez pas désactiver l'installation par défaut de Restic en remplaçant spec.configuration.restic.enable par false dans le CR DataProtectionApplication.
  • Le CR DataProtectionApplication doit être dans un état Ready.

Procédure

  • Modifiez le CR Backup, comme dans l'exemple suivant :

    apiVersion: velero.io/v1
    kind: Backup
    metadata:
      name: <backup>
      labels:
        velero.io/storage-location: default
      namespace: openshift-adp
    spec:
      defaultVolumesToRestic: true 1
    ...
    1
    Ajouter defaultVolumesToRestic: true au bloc spec.

15.3.1.3. Création de crochets de sauvegarde

Vous créez des crochets de sauvegarde pour exécuter des commandes dans un conteneur d'un pod en modifiant la ressource personnalisée (CR) Backup.

Pre s'exécutent avant la sauvegarde du pod. Post s'exécutent après la sauvegarde.

Procédure

  • Ajoutez un crochet au bloc spec.hooks du CR Backup, comme dans l'exemple suivant :

    apiVersion: velero.io/v1
    kind: Backup
    metadata:
      name: <backup>
      namespace: openshift-adp
    spec:
      hooks:
        resources:
          - name: <hook_name>
            includedNamespaces:
            - <namespace> 1
            excludedNamespaces: 2
            - <namespace>
            includedResources: []
            - pods 3
            excludedResources: [] 4
            labelSelector: 5
              matchLabels:
                app: velero
                component: server
            pre: 6
              - exec:
                  container: <container> 7
                  command:
                  - /bin/uname 8
                  - -a
                  onError: Fail 9
                  timeout: 30s 10
            post: 11
    ...
    1
    Facultatif : vous pouvez spécifier les espaces de noms auxquels le crochet s'applique. Si cette valeur n'est pas spécifiée, le crochet s'applique à tous les espaces de noms.
    2
    Facultatif : vous pouvez spécifier des espaces de noms auxquels le crochet ne s'applique pas.
    3
    Actuellement, les pods sont la seule ressource prise en charge à laquelle les crochets peuvent s'appliquer.
    4
    Facultatif : vous pouvez spécifier les ressources auxquelles le crochet ne s'applique pas.
    5
    Facultatif : Ce crochet ne s'applique qu'aux objets correspondant à l'étiquette. Si cette valeur n'est pas spécifiée, le crochet s'applique à tous les espaces de noms.
    6
    Tableau de crochets à exécuter avant la sauvegarde.
    7
    Facultatif : si le conteneur n'est pas spécifié, la commande s'exécute dans le premier conteneur du pod.
    8
    Il s'agit du point d'entrée du conteneur init ajouté.
    9
    Les valeurs autorisées pour le traitement des erreurs sont Fail et Continue. La valeur par défaut est Fail.
    10
    Facultatif : durée d'attente pour l'exécution des commandes. La valeur par défaut est 30s.
    11
    Ce bloc définit un tableau de hooks à exécuter après la sauvegarde, avec les mêmes paramètres que les hooks de pré-sauvegarde.

15.3.2. Planification des sauvegardes

Vous planifiez les sauvegardes en créant une ressource personnalisée (CR) Schedule au lieu d'une CR Backup.

Avertissement

Laissez suffisamment de temps dans votre calendrier de sauvegarde pour qu'une sauvegarde se termine avant qu'une autre ne soit créée.

Par exemple, si la sauvegarde d'un espace de noms prend généralement 10 minutes, ne planifiez pas de sauvegardes plus fréquentes que toutes les 15 minutes.

Conditions préalables

  • Vous devez installer l'opérateur OpenShift API for Data Protection (OADP).
  • Le CR DataProtectionApplication doit être dans un état Ready.

Procédure

  1. Récupérer les CR de backupStorageLocations:

    $ oc get backupStorageLocations -n openshift-adp

    Exemple de sortie

    NAMESPACE       NAME              PHASE       LAST VALIDATED   AGE   DEFAULT
    openshift-adp   velero-sample-1   Available   11s              31m

  2. Créez un CR Schedule, comme dans l'exemple suivant :

    $ cat << EOF | oc apply -f -
    apiVersion: velero.io/v1
    kind: Schedule
    metadata:
      name: <schedule>
      namespace: openshift-adp
    spec:
      schedule: 0 7 * * * 1
      template:
        hooks: {}
        includedNamespaces:
        - <namespace> 2
        storageLocation: <velero-sample-1> 3
        defaultVolumesToRestic: true 4
        ttl: 720h0m0s
    EOF
    1
    cron expression to schedule the backup, for example, 0 7 * * * to perform a backup every day at 7:00.
    2
    Tableau des espaces de noms à sauvegarder.
    3
    Nom du CR backupStorageLocations.
    4
    Facultatif : Ajoutez la paire clé-valeur defaultVolumesToRestic: true si vous sauvegardez des volumes avec Restic.
  3. Vérifiez que l'état de Schedule CR est Completed après l'exécution de la sauvegarde programmée :

    $ oc get schedule -n openshift-adp <schedule> -o jsonpath='{.status.phase}'

15.3.3. Ressources supplémentaires

Red Hat logoGithubRedditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez leBlog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

© 2024 Red Hat, Inc.