Configuración de instantáneas para File Storage for VPC
Nube privada virtual
File Storage for VPC Las instantáneas de volumen le proporcionan una forma estandarizada de copiar el contenido de un volumen en un momento determinado sin crear un volumen completamente nuevo. Las instantáneas son compatibles tanto con las clases de almacenamiento basadas en zonas (zonal dp2 ()) como en regiones (rfs). Para obtener más información sobre las instantáneas, consulte Cómo funcionan las instantáneas.
Para obtener más información sobre File Storage for VPC, consulte Acerca de File Storage for VPC.
La compatibilidad con instantáneas para el File Storage for VPC complemento se encuentra actualmente en fase beta.
Si se elimina el PVC (recurso compartido de archivos), se eliminarán todas las instantáneas correspondientes que pertenezcan al recurso compartido de archivos. En este caso, las instantáneas de volumen CSI permanecen, pero las instantáneas de
backend en VPC no existirán. Por lo tanto, debe eliminar los volúmenes utilizando oc delete vs <snapshot-name>.
Requisitos previos
- Asegúrese de que tiene instalado el complemento File Storage for VPC en su clúster.
- Asegúrese de que dispone de Compartir Instantánea Operador permisos en IAM.
Creación de una app
Cree un ejemplo de reclamación de volumen persistente (PVC) e implemente un pod que haga referencia a esa reclamación.
-
Verifique que el estado del complemento sea
normaly que el estado seaReady.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) -
Verifique que los pods del controlador están desplegados y el estado es
Running.oc get pods -n kube-system | grep vpc-file-csiSalida de ejemplo
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 -
Crear 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 -
Verifique que el PVC se haya creado y se encuentre en estado
Bound.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 -
Crea un archivo de configuración YAML para un despliegue que monte el PVC que has creado.
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 -
Compruebe que el pod se está ejecutando en su clúster.
oc get podsNAME READY STATUS RESTARTS AGE my-deployment-58dd7c89b6-8zdcl 1/1 Running 0 4m50s -
Ahora que ha creado el pod, inicie sesión en él y cree un archivo de texto para utilizarlo en la instantánea.
oc exec -it POD_NAME -- /bin/bashEjemplos comandos para crear un nuevo archivo de texto.
root@my-deployment-58dd7c89b6-8zdcl:/# cd myvolumepath/ root@my-deployment-58dd7c89b6-8zdcl:/myvolumepath# echo "hi" > new.txt root@my-deployment-58dd7c89b6-8zdcl:/myvolumepath# exit
Creación de una instantánea de volumen
Después de crear una implementación y un PVC, puede crear las instantáneas de volumen.
-
Asegúrese de que dispone de Compartir Instantánea Operador permisos en IAM.
-
Cree una instantánea de volumen en su clúster utilizando la clase
ibmc-vpcfile-snapshot-deletede instantánea que se implementa al habilitar el complemento. Guarde la siguiente configuración deVolumeSnapshoten un archivo llamadosnapvol.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 -
Verifique que la instantánea esté lista para usar.
oc get volumesnapshotsEjemplo de salida donde
READYTOUSEestrue.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
Restaurar desde una instantánea de volumen
Después de implementar la instantánea del volumen, puede restaurar los datos en un nuevo volumen utilizando la instantánea. La creación de un PVC aprovisiona dinámicamente un nuevo volumen con datos de instantáneas.
-
Cree un segundo PVC que haga referencia a su instantánea de volumen.
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 -
Verifique que el PVC se haya creado y se encuentre en estado
Bound.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 -
Crea un segundo archivo de configuración YAML para un despliegue que monte el PVC que has creado.
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 -
Verifique que se ha creado el pod.
oc get podsNAME READY STATUS RESTARTS AGE restore-pod-1 1/1 Running 0 30m pod-2 1/1 Running 0 46h -
Inicie sesión en el pod recién creado y compruebe que el archivo de texto de muestra que creó anteriormente se ha guardado en el nuevo 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.txtSalida de ejemplo
hi
Restaurar instantáneas estáticas
Siga los siguientes pasos para restaurar una instantánea estática.
-
Obtenga el CRN instantáneo utilizando
ibmcloud is share-snapshot <share-id> <share-snapshot-id> | grep CRNSalida de ejemplo
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 -
Cree un recurso
VolumeSnapshotContent. Guarde la siguiente configuración como un archivo llamadovolsnapcontent.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.yamlSalida de ejemplo
volumesnapshot.snapshot.storage.k8s.io/crossaccount-snapshot created -
Crear un VolumeSnapshot. Guarde la siguiente configuración como un archivo llamado 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 -
Crear un PVC. Guarde la siguiente configuración como un archivo llamado
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.yamlVuelva a implementar su aplicación.
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 -
Compruebe que el pod se está ejecutando en su clúster.
oc get podsNAME READY STATUS RESTARTS AGE my-deployment-58dd7c89b6-8zdcl 1/1 Running 0 4m50s -
Inicie sesión en el pod recién creado y compruebe que el archivo de texto de muestra que creó anteriormente se ha guardado en el nuevo 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
Desactivar instantáneas
De forma predeterminada, la funcionalidad de instantánea está habilitada cuando se utiliza el File Storage for VPC. Esta funcionalidad se puede desactivar en el mapa de configuración addon-vpc-file-csi-driver-configmap del kube-system espacio de nombres cambiando el IsSnapshotEnabled a false. Tenga en cuenta que con este cambio en el mapa de configuración, cualquier instantánea que se cree fallará con el mensaje CreateSnapshot functionality is disabled:
-
Guarde el mapa de configuración actual de su clúster en su máquina local.
oc get cm -n kube-system addon-vpc-file-csi-driver-configmap -o yaml >> snapshotconfigmap.yaml -
Edita el parámetro
IS_SNAPSHOT_ENABLEDafalse.IS_SNAPSHOT_ENABLED:false -
Guarde el archivo y aplique los cambios.
oc apply -f snapshotconfigmap.yaml