|
Ce document a été traduit à l'aide d'une technologie de traduction automatique. Bien que nous nous efforcions de fournir des traductions exactes, nous ne fournissons aucune garantie quant à l'exhaustivité, l'exactitude ou la fiabilité du contenu traduit. En cas de divergence, la version originale anglaise prévaut et fait foi. |
|
Il s'agit d'une documentation non publiée pour SUSE® Storage 1.12 (Dev). |
Restaurer un volume pour un StatefulSet Kubernetes
Longhorn prend en charge la restauration des sauvegardes, et l’un des cas d’utilisation de cette fonctionnalité est de restaurer des données pour une utilisation dans un StatefulSet Kubernetes, ce qui nécessite de restaurer un volume pour chaque réplique qui a été sauvegardée.
Pour restaurer, suivez les instructions ci-dessous. L’exemple ci-dessous utilise un StatefulSet avec un volume attaché à chaque Pod et deux répliques.
-
Connectez-vous à la page
Longhorn UIdans votre navigateur web. Sous l’ongletBackup, sélectionnez le nom du volume StatefulSet. Cliquez sur le menu déroulant de l’entrée de volume et restaurez-le. Nommez le volume quelque chose qui peut facilement être référencé plus tard pour lePersistent Volumes.-
Répétez cette étape pour chaque volume que vous devez restaurer.
-
Par exemple, si vous restaurez un StatefulSet avec deux répliques qui avaient des volumes nommés
pvc-01aetpvc-02b, la restauration pourrait ressembler à ceci :
Nom de la sauvegarde Volume restauré pvc-01a
statefulset-vol-0
pvc-02b
statefulset-vol-1
-
-
Dans Kubernetes, créez un
Persistent Volumepour chaque volume Longhorn qui a été créé. Nommez les volumes quelque chose qui peut facilement être référencé plus tard pour lePersistent Volume Claims. La capacitéstorage,numberOfReplicas,storageClassNameetvolumeHandledoivent être remplacées ci-dessous. Dans l’exemple, nous faisons référence àstatefulset-vol-0etstatefulset-vol-1dans Longhorn et utilisonslonghorncomme notrestorageClassName.apiVersion: v1 kind: PersistentVolume metadata: name: statefulset-vol-0 spec: capacity: storage: <size> # must match size of Longhorn volume volumeMode: Filesystem accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Delete csi: driver: driver.longhorn.io # driver must match this fsType: ext4 volumeAttributes: numberOfReplicas: <replicas> # must match Longhorn volume value staleReplicaTimeout: '30' # in minutes volumeHandle: statefulset-vol-0 # must match volume name from Longhorn storageClassName: longhorn # must be same name that we will use later --- apiVersion: v1 kind: PersistentVolume metadata: name: statefulset-vol-1 spec: capacity: storage: <size> # must match size of Longhorn volume volumeMode: Filesystem accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Delete csi: driver: driver.longhorn.io # driver must match this fsType: ext4 volumeAttributes: numberOfReplicas: <replicas> # must match Longhorn volume value staleReplicaTimeout: '30' volumeHandle: statefulset-vol-1 # must match volume name from Longhorn storageClassName: longhorn # must be same name that we will use laterSi vous utilisez des volumes chiffrés, vous devez spécifier le
nodePublishSecretRefet lenodeStageSecretReflors de la création duPersistentVolume.kind: PersistentVolume metadata: name: statefulset-encrypted-vol-0 spec: capacity: storage: <size> volumeMode: Filesystem accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Delete csi: driver: driver.longhorn.io fsType: ext4 nodePublishSecretRef: name: <secret-name> namespace: <namespace> nodeStageSecretRef: name: <secret-name> namespace: <namespace> volumeAttributes: numberOfReplicas: <replicas> staleReplicaTimeout: "30" volumeHandle: statefulset-encrypted-vol-0 storageClassName: longhorn -
Dans le
namespace, leStatefulSetsera déployé, créez des PersistentVolume Claims pour chaquePersistent Volume. Le nom duPersistent Volume Claimdoit suivre ce schéma de nommage :<name of Volume Claim Template>-<name of StatefulSet>-<index>
Les Pods StatefulSet sont indexés à partir de zéro. Dans cet exemple, le nom du
Volume Claim Templateestdata, le nom duStatefulSetestwebapp, et il y a deux répliques, qui sont les index0et1.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: data-webapp-0 spec: accessModes: - ReadWriteOnce resources: requests: storage: 2Gi # must match size from earlier storageClassName: longhorn # must match name from earlier volumeName: statefulset-vol-0 # must reference Persistent Volume --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: data-webapp-1 spec: accessModes: - ReadWriteOnce resources: requests: storage: 2Gi # must match size from earlier storageClassName: longhorn # must match name from earlier volumeName: statefulset-vol-1 # must reference Persistent Volume -
Créez le
StatefulSet:apiVersion: apps/v1beta2 kind: StatefulSet metadata: name: webapp # match this with the PersistentVolumeClaim naming scheme spec: selector: matchLabels: app: nginx # has to match .spec.template.metadata.labels serviceName: "nginx" replicas: 2 # by default is 1 template: metadata: labels: app: nginx # has to match .spec.selector.matchLabels spec: terminationGracePeriodSeconds: 10 containers: - name: nginx image: registry.k8s.io/nginx-slim:0.8 ports: - containerPort: 80 name: web volumeMounts: - name: data mountPath: /usr/share/nginx/html volumeClaimTemplates: - metadata: name: data # match this with the PersistentVolumeClaim naming scheme spec: accessModes: [ "ReadWriteOnce" ] storageClassName: longhorn # must match name from earlier resources: requests: storage: 2Gi # must match size from earlier
Résultat : Les données restaurées devraient maintenant être accessibles depuis l’intérieur du StatefulSet
Pods.