Configuration d'instantanés avec le module complémentaire de cluster Block Storage for VPC
Cloud privé virtuel
Block 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. Pour plus d'informations sur les instantanés, voir Comment fonctionnent les instantanés. Pour plus d'informations sur Block Storage for VPC, voir A propos de Block Storage for VPC.
Par défaut, le module complémentaire de cluster Block Storage for VPC crée des volumes et des instantanés dans le même groupe de ressources VPC que celui où le cluster est déployé. Toutefois, à partir de la version 5.2.46 du module complémentaire,
vous pouvez créer des instantanés dans un groupe de ressources différent en spécifiant le paramètre resourceGroup dans votre VolumeSnapshotClass. Pour plus d'informations, voir Création d'instantanés dans un groupe de ressources différent.
Création d'une application
Créez un exemple de réservation de volume persistant (PVC) et déployez un pod qui fait référence à cette réservation.
-
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-block-csi-driver 5.2 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-block-csiExemple de sortie
ibm-vpc-block-csi-controller-0 7/7 Running 0 77s ibm-vpc-block-csi-node-56c85 4/4 Running 0 77s ibm-vpc-block-csi-node-87j2t 4/4 Running 0 77s ibm-vpc-block-csi-node-cmh2h 4/4 Running 0 77s -
Créer un PVC.
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: csi-block-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi storageClassName: ibmc-vpc-block-5iops-tieroc create -f pvc.yaml -
Vérifiez que la réservation de volume persistant est créée et qu'elle est à l'état
Bound.oc get pvcNAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE csi-block-pvc Bound pvc-0798b499-0b61-4f57-a184-4caeb7b9298d 10Gi RWO ibmc-vpc-block-5iops-tier 4m22s -
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-block-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 au pod et créez un fichier texte à utiliser pour l'instantané.
oc exec -it POD_NAME /bin/bashExemple de sortie
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 une réservation de volume persistant, vous pouvez créer les ressources d'instantané de volume.
Vous ne pouvez créer des instantanés que lorsqu'un volume est attaché à un module.
-
Assurez-vous que vous disposez des droits d' opérateur de cliché instantané de partage dans IAM.
-
Créez une ressource d'instantané de volume dans votre cluster à l'aide de la classe d'instantané
ibmc-vpcblock-snapshotdé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-block-pvc spec: volumeSnapshotClassName: ibmc-vpcblock-snapshot source: persistentVolumeClaimName: csi-block-pvcoc create -f snapvol.yaml -
Vérifiez que l'instantané est prêt à être utilisé.
oc get volumesnapshotsExemple de sortie où
READYTOUSEesttrue:NAME READYTOUSE SOURCEPVC SOURCESNAPSHOTCONTENT RESTORESIZE SNAPSHOTCLASS SNAPSHOTCONTENT CREATIONTIME AGE snapshot-csi-block-pvc true csi-block-pvc 1Gi ibmc-vpcblock-snapshot snapcontent-9c374fbf-43a6-48d6-afc5-e76e1ab7c12b 18h 18h
Création d'instantanés dans un groupe de ressources différent
À partir de la version 5.2.46 du module complémentaire pour cluster Block Storage for VPC, vous pouvez créer des instantanés de volume dans un groupe de ressources différent de celui de votre cluster. Cette fonctionnalité offre une plus grande flexibilité dans l'organisation des ressources, la gestion des quotas et le contrôle d'accès.
- Exigence de version: Cette fonctionnalité n'est prise en charge que dans la version du module complémentaire 5.2.46 et les versions ultérieures.
- Comportement par défaut: Si vous ne spécifiez pas de paramètre
resourceGroupou si vous spécifiez une chaîne vide, les instantanés sont créés dans le groupe de ressources du cluster.
Prérequis
Avant de commencer, assurez-vous que vous disposez des autorisations suivantes dans IAM :
- VPC Infrastructure Services (est): Éditeur et rédacteur
- Kubernetes Service (container-kubernetes): Opérateur
- Groupe de ressources: Visionneuse pour chaque groupe de ressources dans lequel vous souhaitez créer des instantanés
Création d'un fichier personnalisé VolumeSnapshotClass
Pour créer des instantanés dans un groupe de ressources différent, vous devez créer une adresse personnalisée VolumeSnapshotClass qui spécifie l'ID du groupe de ressources cible.
-
Obtenez l'identifiant du groupe de ressources dans lequel vous souhaitez créer l'instantané.
ibmcloud resource groups -
Créer un fichier de configuration
VolumeSnapshotClass. Enregistrez le fichier YAML suivant dans un fichier appelévpc-snap-custom-rg.yaml. Remplacez<RESOURCE_GROUP_ID>par l'identifiant de votre groupe de ressources cible.apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshotClass metadata: name: vpc-snap-custom-rg driver: vpc.block.csi.ibm.io deletionPolicy: Delete parameters: resourceGroup: <RESOURCE_GROUP_ID>Le paramètre
resourceGroupdoit être l'identifiant du groupe de ressources et non son nom. -
Créez le site
VolumeSnapshotClassdans votre cluster.oc create -f vpc-snap-custom-rg.yaml -
Vérifiez que le site
VolumeSnapshotClassest bien créé.oc get volumesnapshotclass
Création d'un instantané avec un groupe de ressources personnalisé
Après avoir créé le site VolumeSnapshotClass personnalisé, vous pouvez créer des instantanés qui y font référence.
-
Créez un fichier de configuration
VolumeSnapshotqui fait référence à votre classe d'instantané personnalisée. Enregistrez le fichier YAML suivant dans un fichier appelésnapshot-custom-rg.yaml.apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshot metadata: name: snapshot-custom-rg spec: volumeSnapshotClassName: vpc-snap-custom-rg source: persistentVolumeClaimName: csi-block-pvc -
Créez l'instantané.
oc create -f snapshot-custom-rg.yaml -
Vérifiez que l'instantané est prêt à être utilisé.
oc get volumesnapshots -
Vérifiez que l'instantané a été créé dans le groupe de ressources cible à l'aide de l'interface CLI de IBM Cloud.
ibmcloud target -g <RESOURCE_GROUP_NAME> ibmcloud is snapshots
Restauration à partir d'une image instantanée de volume
Après avoir déployé les ressources d'instantané, vous pouvez restaurer les données sur un nouveau volume à l'aide de l'instantané. La création d'une réservation de volume persistant met à disposition de manière dynamique un nouveau volume avec des données d'image instantanée.
-
Créez une seconde réservation de volume persistant qui fait référence à votre instantané de volume.
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: restore-pvc spec: storageClassName: ibmc-vpc-block-5iops-tier dataSource: name: snapshot-csi-block-pvc kind: VolumeSnapshot apiGroup: snapshot.storage.k8s.io accessModes: - ReadWriteOnce resources: requests: storage: 10Gi -
Vérifiez que la réservation de volume persistant est créée et qu'elle est à l'état
Bound.oc get pvcNAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE restore-pvc Bound pvc-4ede7630-5a49-4bae-b34d-dc528acfb884 10Gi RWO ibmc-vpc-block-5iops-tier 18h -
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: podtwo labels: app: podtwo spec: replicas: 1 selector: matchLabels: app: podtwo template: metadata: labels: app: podtwo 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 podtwo.yaml -
Vérifiez que le pod a bien été créé.
oc get podsNAME READY STATUS RESTARTS AGE POD_NAME 1/1 Running 0 30m POD2_NAME 1/1 Running 0 46h -
Connectez-vous au pod que vous venez de créer et vérifiez que l'exemple de fichier texte que vous avez créé précédemment est sauvegardé 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
Désactivation des instantanés
Par défaut, la fonctionnalité d'instantané est activée lors de l'utilisation de Block Storage for VPC. Cette fonctionnalité peut être désactivée dans la mappe de configuration addon-vpc-block-csi-driver-configmap de l'espace de
nom kube-system en remplaçant IsSnapshotEnabled par false. Notez qu'avec cette modification dans la mappe de configuration, tous les instantanés créés échouent avec le message suivant:CreateSnapshot functionality is disabled.
-
Sauvegardez la mappe de configuration en cours depuis votre cluster sur votre machine locale.
oc get cm -n kube-system addon-vpc-block-csi-driver-configmap -o yaml >> snapshotconfigmap.yaml -
Modifiez le paramètre
IsSnapshotEnabledenfalse. -
Enregistrez le fichier et appliquez vos modifications.
oc apply -f snapshotconfigmap.yaml
Etapes suivantes
Déployez le webhook de validation d'instantané pour valider l'entrée utilisateur. Pour plus d'informations, voir Déploiement du webhook de validation d'instantané.
Identification et résolution des problèmes
Passez en revue les rubriques de dépannage suivantes.