Migração de volumes Block Storage for VPC de perfis Gen-1 para Gen-2

Nuvem Privada Virtual

Migre seus volumes Block Storage for VPC dos perfis da Geração 1 (baseados em camadas) para os perfis da Geração 2 (Desempenho definido por software) para aproveitar o desempenho aprimorado, o ajuste dinâmico de IOPS e a melhor otimização de custos.

Entendendo as gerações de perfil

Block Storage for VPC evoluiu da Geração 1 (baseada em camadas) para os perfis da Geração 2 (Desempenho definido por software).

Geração 1 (baseada em níveis)
Os IOPS são calculados com base no tamanho do volume. Para obter mais informações, consulte Block Storage profiles.
Geração 2 (SDP)
IOPS personalizado independente do tamanho do volume. Para obter mais informações, consulte SDP Block Storage profile.

Para obter as informações mais recentes sobre os perfis de armazenamento em bloco e seus recursos, consulte Block Storage profiles.

Antes de Iniciar

Antes de migrar seus volumes, conclua as etapas a seguir.

Identificar volumes para migração

Encontre PVCs que usam perfis de armazenamento em bloco Gen-1.

  1. Liste todos os PVCs de armazenamento em bloco em seu cluster.

    kubectl get pvc --all-namespaces -o custom-columns=NAMESPACE:.metadata.namespace,NAME:.metadata.name,STORAGECLASS:.spec.storageClassName,STATUS:.status.phase | grep vpc-block
    
  2. Obter o ID do volume VPC de um 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"
    

    Exemplo de saída

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

Verificar a configuração atual do volume

  1. Visualizar o perfil e a configuração atuais do volume de blocos.

    ibmcloud is vol $VOLUME_ID
    

    Exemplo de saída antes da migração

    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 os seguintes valores na saída. Você os usará para verificar se a migração foi bem-sucedida.

    • Perfil: 5iops-tier ( Gen-1 )
    • Geração de armazenamento: 1
    • IOPS ajustável: false

Inicie a migração

O processo de migração é executado em segundo plano enquanto o volume permanece conectado ao pod e o aplicativo continua em execução. O IOPS é ajustado automaticamente para os padrões do SDP e o processo normalmente leva de 5 a 15 minutos.

  1. Iniciar a migração para o perfil SDP.

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

Monitorar o progresso da migração

  1. Verifique o status da tarefa de migração. Se a saída indicar Status: updating e Busy: true, a migração estará em andamento. Quando a saída mostrar Status: available e Busy: false, a migração estará concluída.

    ibmcloud is volume-jobs $VOLUME_ID
    
  2. Verifique o status do volume.

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

    Exemplo de saída durante a migração

    Status                  updating
    Busy                    true
    Profile                 5iops-tier
    

Verificar a conclusão da migração

  1. Confirme se o volume está usando o perfil Gen-2.

    ibmcloud is vol $VOLUME_ID
    

    Exemplo de saída após a migração

    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 os seguintes indicadores de sucesso:

    • Perfil: sdp
    • Geração de armazenamento: 2
    • IOPS ajustável: true
    • IOPS: Aumentado (por exemplo, 3000 a 4000)
    • Largura de banda: aprimorada

Atualização dos metadados do site PersistentVolume

  1. Atualize os metadados do PV para refletir o 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 a atualização.

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

    Saída esperada

    ibmc-vpc-block-sdp
    

    O PVC continua a mostrar o nome original StorageClass. Esse comportamento é esperado porque o campo storageClassName em um PVC é imutável. O perfil de armazenamento real é determinado pelo PV, que você atualizou nesta etapa.

Valide seu aplicativo

Verifique se o seu aplicativo está funcionando corretamente após a migração.

  1. Verifique o status do pod. Verifique se todos os pods estão no estado “ Running ”.

    kubectl get pods -n <namespace>
    
  2. Verifique a conexão do volume. Confirme se o volume está montado corretamente.

    kubectl describe pod <pod-name> -n <namespace> | grep -A 5 "Volumes:"
    
  3. Verifique os registros do aplicativo. Procure erros relacionados ao armazenamento ou às operações de E/S.

    kubectl logs <pod-name> -n <namespace> --tail=50
    
  4. Teste o endpoint do aplicativo, se aplicável. Verifique se o aplicativo responde corretamente.

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

Crie um Gen-2 StorageClass

Crie um SDP StorageClass para provisionar novos volumes.

  1. Crie um arquivo YAML para o StorageClass. Salve a seguinte configuração 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 o StorageClass.

    kubectl apply -f storageclass-sdp.yaml
    
  3. Verifique se o arquivo “ StorageClass ” foi criado.

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

Ajuste o IOPS e a taxa de transferência para otimizar o desempenho

Após a migração, você poderá ajustar o IOPS e a taxa de transferência (largura de banda) dinamicamente, de acordo com os requisitos da sua carga de trabalho.

  • Comece com 5.000 IOPS para cargas de trabalho gerais.
  • Use 10.000 IOPS ou mais para bancos de dados.
  • Monitore o uso e ajuste com base nas necessidades reais.

Atualização de IOPS

  1. Aumente o IOPS para obter maior desempenho.

    ibmcloud is volume-update $VOLUME_ID --iops 8000
    
  2. Verifique a atualização do IOPS.

    ibmcloud is vol $VOLUME_ID | grep IOPS
    

Atualização da taxa de transferência (largura de banda)

Após a migração para o perfil SDP, os volumes passam a ter uma alocação padrão de largura de banda. É possível aumentar a largura de banda para melhorar a taxa de transferência em cargas de trabalho com uso intensivo de E/S.

  1. Verifique a alocação atual de largura de banda.

    ibmcloud is vol $VOLUME_ID | grep Bandwidth
    
  2. Aumente a largura de banda para obter maior taxa de transferência. Use a opção “ --bandwidth ” para especificar a largura de banda desejada em Mbps.

    ibmcloud is volume-update $VOLUME_ID --bandwidth 2000
    
  3. Verifique a atualização da largura de banda.

    ibmcloud is vol $VOLUME_ID | grep Bandwidth
    

    O valor da largura de banda representa a taxa de transferência máxima, em MB/s, que o volume pode atingir. Valores mais altos de largura de banda proporcionam melhor desempenho em operações que envolvem grande volume de dados.

Resolução de problemas

Migração travada na atualização do status

Se o status da migração permanecer em updating por mais de 30 minutos, conclua as etapas a seguir. Observe que volumes maiores levam mais tempo para migrar e podem permanecer no estado updating por 45 minutos.

  1. Verifique os detalhes do trabalho.

    ibmcloud is volume-jobs $VOLUME_ID
    
  2. Verifique se há erros ou avisos no status do volume.

    ibmcloud is vol $VOLUME_ID | grep -E "Status|Busy"
    
  3. Aguarde mais 15 minutos, pois volumes grandes demoram mais para serem migrados.

  4. Verifique na página de status IBM Cloud se há problemas de serviço de VPC.

  5. Se a migração ficar parada por mais de uma hora, entre em contato com o suporte do IBM com o ID do trabalho.

O PVC mostra o antigo StorageClass

Se o PVC ainda fizer referência ao Gen-1 StorageClass após a migração, esse comportamento é esperado e não requer nenhuma ação. O campo PVC storageClassName é imutável. O perfil de armazenamento real é determinado pelo PV, que você atualizou nas etapas anteriores. A funcionalidade não é afetada.

  1. Verifique se o PV (não o PVC) está correto.

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

    Saída esperada

    ibmc-vpc-block-sdp
    

O desempenho não melhorou

Se você não observar um aumento de desempenho após a migração, conclua as etapas a seguir.

  1. Verifique a alocação real de IOPS.

    ibmcloud is vol $VOLUME_ID | grep IOPS
    
  2. Verifique o perfil do volume.

    ibmcloud is vol $VOLUME_ID | grep Profile
    
  3. Aumente a alocação de IOPS.

    ibmcloud is volume-update $VOLUME_ID --iops 10000
    
  4. Verifique a atualização.

    ibmcloud is vol $VOLUME_ID | grep IOPS
    

Próximas etapas

Após concluir a migração, considere as próximas etapas a seguir.

  • Migre volumes adicionais repetindo este tutorial.
  • Monitore o desempenho do volume e ajuste o IOPS conforme necessário.
  • Atualize seus modelos de implantação para usar Gen-2 StorageClasses para novos volumes.
  • Analise a capacidade e o desempenho do site Block Storage para obter orientação de otimização.