Configuración de instantáneas con el complemento de clúster Block Storage for VPC
Nube privada virtual
Block 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. Para obtener más información sobre las instantáneas, consulte Cómo funcionan las instantáneas. Para obtener más información sobre Block Storage for VPC, consulte Acerca de Block Storage for VPC.
Por defecto, el complemento de clúster Block Storage for VPC crea volúmenes e instantáneas en el mismo grupo de recursos VPC en el que se despliega el clúster. Sin embargo, a partir de la versión del complemento 5.2.46 y posteriores, puede crear
instantáneas en un grupo de recursos diferente especificando el parámetro resourceGroup en su VolumeSnapshotClass. Para obtener más información, consulte Creación de instantáneas en un grupo de recursos diferente.
Creación de una app
Cree un ejemplo de reclamación de volumen persistente (PVC) y despliegue un pod que haga referencia a dicha reclamación.
-
Verifique que el estado del complemento sea
normaly el estado seaReady.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) -
Verifique que los pods del controlador están desplegados y el estado es
Running.oc get pods -n kube-system | grep vpc-block-csiSalida de ejemplo
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 -
Crea 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 -
Verifique que la PVC se ha creado y está en un estado
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 -
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-block-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 el pod y cree un archivo de texto para utilizarlo para la instantánea.
oc exec -it POD_NAME /bin/bashSalida de ejemplo
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 un despliegue y una PVC, puede crear los recursos de instantánea de volumen.
Sólo se pueden crear instantáneas cuando un volumen está conectado a un pod.
-
Asegúrese de que tiene permisos de Operador de instantáneas compartidas en IAM.
-
Cree un recurso de instantánea de volumen en el clúster utilizando la clase de instantánea
ibmc-vpcblock-snapshotque se despliega 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-block-pvc spec: volumeSnapshotClassName: ibmc-vpcblock-snapshot source: persistentVolumeClaimName: csi-block-pvcoc create -f snapvol.yaml -
Verifique que la instantánea está lista para su uso.
oc get volumesnapshotsEjemplo de salida donde
READYTOUSEestrue: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
Creación de instantáneas en un grupo de recursos diferente
A partir de la versión 5.2.46 y posteriores del complemento de clúster Block Storage for VPC, puede crear instantáneas de volumen en un grupo de recursos distinto del grupo de recursos de su clúster. Esta función proporciona una mayor flexibilidad en la organización de recursos, la gestión de cuotas y el control de acceso.
- Requisito de versión: Esta función sólo es compatible con la versión del complemento 5.2.46 y posteriores.
- Comportamiento por defecto: Si no se especifica un parámetro
resourceGroupo si se especifica una cadena vacía, las instantáneas se crean en el grupo de recursos del clúster.
Requisitos previos
Antes de empezar, asegúrese de que dispone de los siguientes permisos en IAM:
- VPC Servicios de Infraestructura (es): Editor y Escritor
- Kubernetes Service (contenedor-kubernetes): Operador
- Grupo de recursos: Visor para cada grupo de recursos en el que desee crear instantáneas
Creación de un VolumeSnapshotClass
Para crear instantáneas en un grupo de recursos diferente, debe crear un VolumeSnapshotClass personalizado que especifique el ID del grupo de recursos de destino.
-
Obtenga el ID del grupo de recursos donde desea crear la instantánea.
ibmcloud resource groups -
Cree un archivo de configuración
VolumeSnapshotClass. Guarde el siguiente YAML en un archivo llamadovpc-snap-custom-rg.yaml. Sustituya<RESOURCE_GROUP_ID>por el ID del grupo de recursos de destino.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>El parámetro
resourceGroupdebe ser el ID del grupo de recursos, no el nombre del grupo de recursos. -
Cree el sitio
VolumeSnapshotClassen su clúster.oc create -f vpc-snap-custom-rg.yaml -
Compruebe que se ha creado
VolumeSnapshotClass.oc get volumesnapshotclass
Creación de una instantánea con un grupo de recursos personalizado
Una vez creada la página personalizada VolumeSnapshotClass, puede crear instantáneas que hagan referencia a ella.
-
Cree un archivo de configuración
VolumeSnapshotque haga referencia a su clase de instantánea personalizada. Guarde el siguiente YAML en un archivo llamadosnapshot-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 -
Cree la instantánea.
oc create -f snapshot-custom-rg.yaml -
Verifique que la instantánea está lista para su uso.
oc get volumesnapshots -
Compruebe que la instantánea se ha creado en el grupo de recursos de destino utilizando la CLI de IBM Cloud.
ibmcloud target -g <RESOURCE_GROUP_NAME> ibmcloud is snapshots
Restauración desde una instantánea de volumen
Después de desplegar los recursos de instantánea, puede restaurar los datos en un nuevo volumen utilizando la instantánea. La creación de una PVC suministra dinámicamente un nuevo volumen con datos de instantánea.
-
Cree una segunda PVC que haga referencia a la instantánea de volumen.
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 -
Verifique que la PVC se ha creado y está en un estado
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 -
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: 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 -
Verifique que se ha creado el pod.
oc get podsNAME READY STATUS RESTARTS AGE POD_NAME 1/1 Running 0 30m POD2_NAME 1/1 Running 0 46h -
Inicie sesión en el pod recién creado y verifique que el archivo de texto de ejemplo que ha creado 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
Desactivación de instantáneas
De forma predeterminada, la funcionalidad de instantánea está habilitada cuando se utiliza Block Storage for VPC. Esta funcionalidad se puede desactivar en el configmap addon-vpc-block-csi-driver-configmap en el espacio de nombres
kube-system cambiando IsSnapshotEnabled por false. Tenga en cuenta que con este cambio en el mapa de configuración, las instantáneas que se creen fallarán con el mensaje:CreateSnapshot functionality is disabled.
-
Guarde el mapa de configuración actual del clúster en la máquina local.
oc get cm -n kube-system addon-vpc-block-csi-driver-configmap -o yaml >> snapshotconfigmap.yaml -
Edite el parámetro
IsSnapshotEnabledenfalse. -
Guarde el archivo y aplique los cambios.
oc apply -f snapshotconfigmap.yaml
Próximos pasos
Despliegue el webhook de validación de instantánea para validar la entrada de usuario. Para obtener más información, consulte Despliegue del webhook de validación de instantánea.
Resolución de problemas de instantáneas
Revise los siguientes temas de solución de problemas.