Migración de volúmenes Block Storage for VPC de perfiles Gen-1 a Gen-2

Nube privada virtual

Migre sus volúmenes de Block Storage for VPC de perfiles de Generación 1 (basados en niveles) a perfiles de Generación 2 (rendimiento definido por software) para aprovechar las ventajas de un rendimiento mejorado, un ajuste dinámico de IOPS y una mejor optimización de costes.

Comprender las generaciones de perfiles

Block Storage for VPC ha evolucionado de los perfiles de la Generación 1 (basados en niveles) a la Generación 2 (rendimiento definido por software).

Generación 1 (por niveles)
Las IOPS se calculan en función del tamaño del volumen. Para más información, consulte Block Storage profiles.
Generación 2 (SDP)
IOPS personalizadas independientes del tamaño del volumen. Para más información, consulte el perfil SDP Block Storage.

Para obtener la información más reciente sobre los perfiles de almacenamiento en bloque y sus capacidades, consulta « Block Storage profiles ».

Antes de empezar

Antes de migrar tus volúmenes, completa los siguientes pasos.

Identificar volúmenes para la migración

Busque PVC que utilicen perfiles de almacenamiento de bloques Gen-1.

  1. Enumera todos los PVC de almacenamiento en bloque de tu clúster.

    kubectl get pvc --all-namespaces -o custom-columns=NAMESPACE:.metadata.namespace,NAME:.metadata.name,STORAGECLASS:.spec.storageClassName,STATUS:.status.phase | grep vpc-block
    
  2. Obtener el ID de volumen VPC de un PVC.

    PV_NAME=$(kubectl get pvc <pvc-name> -n <namespace> -o jsonpath='{.spec.volumeName}')
    VOLUME_ID=$(kubectl get pv $PV_NAME -o jsonpath='{.spec.csi.volumeHandle}')
    echo "Volume ID: $VOLUME_ID"
    

    Salida de ejemplo

    Volume ID: r026-3afe630d-1a47-482c-aade-e37f5e0bb9f4
    

Comprobar la configuración actual del volumen

  1. Ver el perfil y la configuración actual del volumen de bloques.

    ibmcloud is vol $VOLUME_ID
    

    Ejemplo de salida antes de la migración

    ID                      r026-3afe630d-1a47-482c-aade-e37f5e0bb9f4
    Name                    pvc-d4a2b016-a5e4-46de-9214-a64f5fc8e344
    Status                  available
    Attachment state        attached
    Capacity                100
    IOPS                    3000
    Bandwidth(Mbps)         393
    Profile                 5iops-tier
    Storage Generation      1
    Adjustable IOPS         false
    Busy                    false
    
  2. Observe los siguientes valores de la salida. Te servirán para verificar que la migración se ha realizado correctamente.

    • Perfil: 5iops-tier ( Gen-1 )
    • Generación de almacenamiento: 1
    • IOPS ajustables: false

Inicie la migración

El proceso de migración se ejecuta en segundo plano mientras su volumen sigue conectado a su pod y su aplicación continúa ejecutándose. Las IOPS se ajustan automáticamente a los valores predeterminados del SDP y el proceso suele durar entre 5 y 15 minutos.

  1. Iniciar la migración al perfil SDP.

    ibmcloud is volume-job-create $VOLUME_ID --profile sdp
    

Supervisar el progreso de la migración

  1. Comprueba el estado de la tarea de migración. Si la salida indica Status: updating y Busy: true, la migración está en curso. Cuando la salida muestre Status: available y Busy: false, la migración se habrá completado.

    ibmcloud is volume-jobs $VOLUME_ID
    
  2. Comprueba el estado del volumen.

    watch -n 30 "ibmcloud is vol $VOLUME_ID | grep -E 'Status|Busy|Profile'"
    

    Ejemplo de salida durante la migración

    Status                  updating
    Busy                    true
    Profile                 5iops-tier
    

Verificar la finalización de la migración

  1. Confirme que el volumen está utilizando el perfil Gen-2.

    ibmcloud is vol $VOLUME_ID
    

    Ejemplo de salida tras la migración

    ID                          r026-3afe630d-1a47-482c-aade-e37f5e0bb9f4
    Name                        pvc-d4a2b016-a5e4-46de-9214-a64f5fc8e344
    Status                      available
    Attachment state            attached
    Capacity                    100
    IOPS                        4000
    Bandwidth(Mbps)             1000
    Profile                     sdp
    Storage Generation          2
    Adjustable IOPS             true
    Adjustable Capacity States  unattached,attached
    Adjustable IOPS States      unattached,attached
    Busy                        false
    
  2. Verifique los siguientes indicadores de éxito:

    • Perfil: sdp
    • Generación de almacenamiento: 2
    • IOPS ajustables: true
    • IOPS: Aumento (por ejemplo, de 3000 a 4000)
    • Ancho de banda: mejorado

Actualización de los metadatos PersistentVolume

  1. Actualice los metadatos FV para reflejar el perfil Gen-2.

    kubectl patch pv $PV_NAME --type='json' -p='[
      {"op": "replace", "path": "/spec/storageClassName", "value": "ibmc-vpc-block-sdp"},
      {"op": "replace", "path": "/spec/csi/volumeAttributes/profile", "value": "sdp"},
      {"op": "replace", "path": "/spec/csi/volumeAttributes/iops", "value": "4000"}
    ]'
    
  2. Verifique la actualización.

    kubectl get pv $PV_NAME -o jsonpath='{.spec.storageClassName}'
    

    Salida esperada

    ibmc-vpc-block-sdp
    

    El PVC sigue mostrando el nombre original StorageClass. Este comportamiento es esperado porque el campo storageClassName en un PVC es inmutable. El perfil de almacenamiento real viene determinado por el PV, que ha actualizado en este paso.

Valide su solicitud

Compruebe que su aplicación funciona correctamente tras la migración.

  1. Compruebe el estado del pod. Comprueba que todos los pods se encuentren en el estado Running.

    kubectl get pods -n <namespace>
    
  2. Verifique la fijación del volumen. Confirme que el volumen está montado correctamente.

    kubectl describe pod <pod-name> -n <namespace> | grep -A 5 "Volumes:"
    
  3. Comprueba los registros de la aplicación. Busque cualquier error relacionado con el almacenamiento o las operaciones de E/S.

    kubectl logs <pod-name> -n <namespace> --tail=50
    
  4. Pruebe el punto final de la aplicación, si procede. Compruebe que la aplicación responde correctamente.

    curl -I https://<app-endpoint>/health
    

Cree un Gen-2 StorageClass

Cree un SDP StorageClass para el aprovisionamiento de nuevos volúmenes.

  1. Crea un archivo YAML para el servicio StorageClass. Guarde la siguiente configuración como storageclass-sdp.yaml.

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: ibmc-vpc-block-sdp-general
      labels:
        app: ibm-vpc-block-csi-driver
    provisioner: vpc.block.csi.ibm.io
    parameters:
      profile: "sdp"
      iops: "5000"
      csi.storage.k8s.io/fstype: "ext4"
      billingType: "hourly"
      encrypted: "false"
      region: ""
      zone: ""
      tags: "generation:2,profile:sdp"
    reclaimPolicy: Delete
    allowVolumeExpansion: true
    volumeBindingMode: WaitForFirstConsumer
    
  2. Aplique el StorageClass.

    kubectl apply -f storageclass-sdp.yaml
    
  3. Comprueba la creación de StorageClass.

    kubectl get storageclass ibmc-vpc-block-sdp-general
    

Ajusta las IOPS y el rendimiento para optimizar el rendimiento

Tras la migración, podrás ajustar dinámicamente las IOPS y el rendimiento (ancho de banda) en función de los requisitos de tu carga de trabajo.

  • Empieza con 5.000 IOPS para cargas de trabajo generales.
  • Utilice 10.000 IOPS o más para las bases de datos.
  • Supervise el uso y ajústelo en función de las necesidades reales.

Actualización de IOPS

  1. Aumente las IOPS para obtener un mayor rendimiento.

    ibmcloud is volume-update $VOLUME_ID --iops 8000
    
  2. Comprueba la actualización de IOPS.

    ibmcloud is vol $VOLUME_ID | grep IOPS
    

Actualización del rendimiento (ancho de banda)

Tras la migración al perfil SDP, los volúmenes cuentan con una asignación de ancho de banda predeterminada. Puedes aumentar el ancho de banda para mejorar el rendimiento en cargas de trabajo con un uso intensivo de E/S.

  1. Comprueba la asignación actual de ancho de banda.

    ibmcloud is vol $VOLUME_ID | grep Bandwidth
    
  2. Aumenta el ancho de banda para conseguir un mayor rendimiento. Utiliza la opción « --bandwidth » para especificar el ancho de banda deseado en Mbps.

    ibmcloud is volume-update $VOLUME_ID --bandwidth 2000
    
  3. Comprueba la actualización del ancho de banda.

    ibmcloud is vol $VOLUME_ID | grep Bandwidth
    

    El valor del ancho de banda representa el rendimiento máximo, en MB/s, que puede alcanzar el volumen. Un mayor ancho de banda ofrece un mejor rendimiento en operaciones que requieren un gran volumen de datos.

Resolución de problemas

Migración bloqueada en estado de actualización

Si el estado de la migración permanece en updating durante más de 30 minutos, realice los siguientes pasos. Tenga en cuenta que los volúmenes más grandes tardan más en migrar y pueden permanecer en el estado updating durante 45 minutos.

  1. Comprueba los detalles del trabajo.

    ibmcloud is volume-jobs $VOLUME_ID
    
  2. Compruebe si hay errores o advertencias en el estado del volumen.

    ibmcloud is vol $VOLUME_ID | grep -E "Status|Busy"
    
  3. Espere 15 minutos más, ya que los volúmenes grandes tardan más en migrar.

  4. Compruebe en la página de estado IBM Cloud si hay problemas con el servicio VPC.

  5. Si la migración se bloquea durante más de 1 hora, póngase en contacto con el servicio de asistencia IBM indicando el ID del trabajo.

El PVC muestra antiguos StorageClass

Si el PVC sigue haciendo referencia a Gen-1 StorageClass después de la migración, este comportamiento es el esperado y no requiere ninguna acción. El campo PVC storageClassName es inmutable. El perfil de almacenamiento real viene determinado por el PV, que usted actualizó en los pasos anteriores. La funcionalidad no se ve afectada.

  1. Compruebe que el PV (no el PVC) es correcto.

    kubectl get pv $PV_NAME -o jsonpath='{.spec.storageClassName}'
    

    Salida esperada

    ibmc-vpc-block-sdp
    

Rendimiento no mejorado

Si no observa un aumento del rendimiento tras la migración, siga los pasos siguientes.

  1. Comprueba la asignación real de IOPS.

    ibmcloud is vol $VOLUME_ID | grep IOPS
    
  2. Comprueba el perfil de volumen.

    ibmcloud is vol $VOLUME_ID | grep Profile
    
  3. Aumenta la asignación de IOPS.

    ibmcloud is volume-update $VOLUME_ID --iops 10000
    
  4. Verifique la actualización.

    ibmcloud is vol $VOLUME_ID | grep IOPS
    

Próximos pasos

Una vez completada la migración, tenga en cuenta los siguientes pasos.

  • Migre volúmenes adicionales repitiendo este tutorial.
  • Supervise el rendimiento del volumen y ajuste las IOPS según sea necesario.
  • Actualice sus plantillas de despliegue para utilizar Gen-2 StorageClasses para los nuevos volúmenes.
  • Revise la capacidad y el rendimiento de Block Storage para obtener orientación sobre la optimización.