Configuration des instantanés pour File Storage for VPC
Cloud privé virtuel
File Storage for VPC Les instantanés de volume vous offrent un moyen standardisé de copier le contenu d'un volume à un moment donné sans créer un volume entièrement nouveau. Les instantanés sont pris en charge pour les classes de stockage basées sur les zones (zonal( dp2 )) et les régions (rfs). Pour plus d'informations sur les instantanés, consultez la section Fonctionnement des instantanés.
Pour plus d'informations sur File Storage for VPC, voir A propos de File Storage for VPC.
La prise en charge des instantanés pour le File Storage for VPC module complémentaire est actuellement en version bêta.
Si le PVC (partage de fichiers) est supprimé, tous les instantanés correspondants appartenant au partage de fichiers sont supprimés. Dans ce cas, les instantanés de volume CSI restent, mais les instantanés backend dans VPC n'existent pas. Par
conséquent, vous devez supprimer les volumes à l'aide de oc delete vs <snapshot-name>.
Prérequis
- Assurez-vous que le module complémentaire File Storage for VPC est installé dans votre cluster.
- Assurez-vous que vous disposez de Opérateur d'instantanés d'actions autorisations dans IAM.
Création d'une application
Créez un exemple de revendication de volume persistant (PVC) et déployez un pod qui fait référence à cette revendication.
-
Vérifiez que l'état du module complémentaire est
normalet que le statut estReady.ibmcloud oc cluster addon ls --cluster CLUSTER-IDName Version Health State Health Status vpc-file-csi-driver 2.0 normal Addon Ready. For more info: http://ibm.biz/addon-state (H1500) -
Vérifiez que les pods du pilote sont déployés et à l'état
Running.oc get pods -n kube-system | grep vpc-file-csiExemple de sortie
ibm-vpc-file-csi-controller-s34sw 7/7 Running 0 77s ibm-vpc-file-csi-controller-7hdhd 7/7 Running 0 77s ibm-vpc-file-csi-node-56c85 4/4 Running 0 77s ibm-vpc-file-csi-node-87j2t 4/4 Running 0 77s ibm-vpc-file-csi-node-cmh2h 4/4 Running 0 77s -
Créer un PVC.
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: csi-file-pvc spec: accessModes: - ReadWriteMany resources: requests: storage: 10Gi storageClassName: ibmc-vpc-file-min-iopsoc create -f pvc.yaml -
Vérifiez que le PVC est créé et qu'il est dans un
Boundétat.oc get pvcNAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE csi-file-pvc Bound pvc-9873bd7e-41a8-4234-a9bf-271b8ca7e4f9 10Gi RWM ibmc-vpc-file-min-iops <unset> 5 -
Créez un fichier de configuration YAML pour un déploiement qui monte le PVC que vous avez créé.
apiVersion: apps/v1 kind: Deployment metadata: name: my-deployment labels: app: my-deployment spec: replicas: 1 selector: matchLabels: app: my-deployment template: metadata: labels: app: my-deployment spec: containers: - image: nginx # Your containerized app image name: container-name volumeMounts: - mountPath: /myvolumepath # Mount path for PVC name: my-vol # Volume mount name volumes: - name: my-vol # Volume resource name persistentVolumeClaim: claimName: csi-file-pvc # The name of the PVC you created earlieroc create -f pod.yaml -
Vérifiez que le pod fonctionne dans votre cluster.
oc get podsNAME READY STATUS RESTARTS AGE my-deployment-58dd7c89b6-8zdcl 1/1 Running 0 4m50s -
Maintenant que vous avez créé le pod, connectez-vous à celui-ci et créez un fichier texte à utiliser pour le snapshot.
oc exec -it POD_NAME -- /bin/bashExemples de commandes pour créer un nouveau fichier texte.
root@my-deployment-58dd7c89b6-8zdcl:/# cd myvolumepath/ root@my-deployment-58dd7c89b6-8zdcl:/myvolumepath# echo "hi" > new.txt root@my-deployment-58dd7c89b6-8zdcl:/myvolumepath# exit
Création d'un instantané de volume
Après avoir créé un déploiement et un PVC, vous pouvez créer les instantanés de volume.
-
Assurez-vous que vous disposez de Opérateur d'instantanés d'actions autorisations dans IAM.
-
Créez un instantané de volume dans votre cluster à l'aide de la classe
ibmc-vpcfile-snapshot-deletesnapshot déployée lorsque vous avez activé le module complémentaire. Enregistrez la configuration suivante deVolumeSnapshotdans un fichier appelésnapvol.yaml.apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshot metadata: name: snapshot-csi-file-pvc spec: volumeSnapshotClassName: ibmc-vpcfile-snapshot-delete source: persistentVolumeClaimName: csi-file-pvcoc create -f snapvol.yaml -
Vérifiez que l'instantané est prêt à être utilisé.
oc get volumesnapshotsExemple de résultat où
READYTOUSEesttrue.NAME READYTOUSE SOURCEPVC SOURCESNAPSHOTCONTENT RESTORESIZE SNAPSHOTCLASS SNAPSHOTCONTENT CREATIONTIME AGE ibmc-vpcfile-snapshot-delete true csi-file-pvc 10Gi ibmc-vpcfile-snapshot-delete snapcontent-9c374fbf-43a6-48d6-afc5-e76e1ab7c12b 18h 18h
Restauration à partir d'un instantané de volume
Après avoir déployé l'instantané du volume, vous pouvez restaurer les données sur un nouveau volume à l'aide de l'instantané. La création d'un PVC provisionne dynamiquement un nouveau volume avec les données de snapshot.
-
Créez un deuxième PVC qui fait référence à votre instantané de volume.
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: restore-pvc spec: storageClassName: ibmc-vpc-file-min-iops dataSource: name: snapshot-csi-file-pvc kind: VolumeSnapshot apiGroup: snapshot.storage.k8s.io accessModes: - ReadWriteMany resources: requests: storage: 10Gi -
Vérifiez que le PVC est créé et qu'il est dans un
Boundétat.oc get pvcNAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE csi-file-pvc Bound pvc-9873bd7e-41a8-4234-a9bf-271b8ca7e4f9 10Gi RWM ibmc-vpc-file-min-iops <unset> 9m16s restore-pvc Bound pvc-04dc8d6c-ac75-48b1-989d-ed67deb35911 10Gi RWM ibmc-vpc-file-min-iops <unset> 116s -
Créez un deuxième fichier de configuration YAML pour un déploiement qui monte le PVC que vous avez créé.
apiVersion: apps/v1 kind: Deployment metadata: name: restore-pod labels: app: restore-pod spec: replicas: 1 selector: matchLabels: app: restore-pod template: metadata: labels: app: restore-pod spec: containers: - image: nginx # Your containerized app image name: container-name volumeMounts: - mountPath: /myvolumepath # Mount path for pvc from container name: my-vol # Volume mount name volumes: - name: my-vol # Volume resource name persistentVolumeClaim: claimName: restore-pvc # The name of the PVC that you created earlieroc create -f restore-pod.yaml -
Vérifiez que le pod a bien été créé.
oc get podsNAME READY STATUS RESTARTS AGE restore-pod-1 1/1 Running 0 30m pod-2 1/1 Running 0 46h -
Connectez-vous au pod nouvellement créé et vérifiez que le fichier texte d'exemple que vous avez créé précédemment est enregistré dans le nouveau pod.
oc exec -it POD_NAME -- /bin/bash root@POD_NAME :/# cd myvolumepath/ root@POD_NAME :/myvolumepath# ls lost+found new.txt root@POD_NAME :/myvolumepath# cat new.txtExemple de sortie
hi
Restauration d'instantanés statiques
Suivez les étapes suivantes pour restaurer un instantané statique.
-
Obtenir un instantané CRN à l'aide de
ibmcloud is share-snapshot <share-id> <share-snapshot-id> | grep CRNExemple de sortie
CRN crn:v1:staging:public:is:us-south-3:a/77f2bceddaeb577dcaddb4073fe82c1c::share-snapshot:r134-1b3af00c-7a07-4ba7-b005-f6723c5b5e98/r134-164521b1-f5c1-4968-9605-a7aaa7e6cd2f -
Créer une ressource
VolumeSnapshotContent. Enregistrez la configuration suivante dans un fichier nommévolsnapcontent.yaml.apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshotContent metadata: name: static-file-snapshot-cnt spec: volumeSnapshotClassName: ibmc-vpcfile-snapshot-retain deletionPolicy: Retain driver: vpc.file.csi.ibm.io source: snapshotHandle: crn:v1:staging:public:is:us-south-3:a/77f2bceddaeb577dcaddb4073fe82c1c::share-snapshot:r134-1b3af00c-7a07-4ba7-b005-f6723c5b5e98/r134-164521b1-f5c1-4968-9605-a7aaa7e6cd2f # Enter the CRN of the snapshot you created earlier. For example crn:v1:public:is:us-south:a/8ee729d7f903db130b00257d91b6977f::snapshot:r134-64c3ad8e-786e-4f54-9b63-388615811ba6 volumeSnapshotRef: name: static-file-snapshot namespace: defaultoc apply -f volsnapcontent.yamlExemple de sortie
volumesnapshot.snapshot.storage.k8s.io/crossaccount-snapshot created -
Créer un VolumeSnapshot. Enregistrez la configuration suivante dans un fichier nommé volsnap.yaml.
apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshot metadata: name: static-file-snapshot namespace: default spec: volumeSnapshotClassName: ibmc-vpcfile-snapshot-retain source: volumeSnapshotContentName: static-file-snapshot-cnt # Enter the name of the VolumeSnapshotContent that you created in the previous step.oc apply -f volsnap.yaml -
Créer un PVC. Enregistrez la configuration suivante dans un fichier nommé
pvc2.yaml.apiVersion: v1 kind: PersistentVolumeClaim metadata: name: restore-static-pvc spec: storageClassName: ibmc-vpc-file-min-iops dataSource: name: static-file-snapshot kind: VolumeSnapshot apiGroup: snapshot.storage.k8s.io accessModes: - ReadWriteMany resources: requests: storage: 10Gioc apply -f pvc2.yamlRedéployez votre application.
apiVersion: apps/v1 kind: Deployment metadata: name: my-deployment labels: app: my-deployment spec: replicas: 1 selector: matchLabels: app: my-deployment template: metadata: labels: app: my-deployment spec: containers: - image: nginx # Your containerized app image name: container-name volumeMounts: - mountPath: /myvolumepath # Mount path for PVC name: my-vol # Volume mount name volumes: - name: my-vol # Volume resource name persistentVolumeClaim: claimName: restore-static-pvc # The name of the PVC you created earlieroc create -f dep2.yaml -
Vérifiez que le pod fonctionne dans votre cluster.
oc get podsNAME READY STATUS RESTARTS AGE my-deployment-58dd7c89b6-8zdcl 1/1 Running 0 4m50s -
Connectez-vous au pod nouvellement créé et vérifiez que le fichier texte d'exemple que vous avez créé précédemment est enregistré dans le nouveau pod.
root@my-deployment-static-768f64ffcf-h6qft:/# cd myvolumepath/ root@my-deployment-static-768f64ffcf-h6qft:/myvolumepath# ls new.txt root@my-deployment-static-768f64ffcf-h6qft:/myvolumepath# cat new.txt hi
Désactiver les instantanés
Par défaut, la fonctionnalité de capture instantanée est activée lors de l'utilisation du File Storage for VPC. Cette fonctionnalité peut être désactivée dans le configmap addon-vpc-file-csi-driver-configmap dans l'espace kube-system de noms en remplaçant IsSnapshotEnabled par false. Notez qu'avec cette modification dans le configmap, tous les instantanés créés échouent avec le message CreateSnapshot functionality is disabled suivant
:.
-
Enregistrez la configuration actuelle de votre cluster sur votre ordinateur local.
oc get cm -n kube-system addon-vpc-file-csi-driver-configmap -o yaml >> snapshotconfigmap.yaml -
Modifiez le paramètre
IS_SNAPSHOT_ENABLEDen le remplaçant parfalse.IS_SNAPSHOT_ENABLED:false -
Enregistrez le fichier et appliquez vos modifications.
oc apply -f snapshotconfigmap.yaml