Migrar VMs do VMware ESXi para a virtualização Red Hat OpenShift
Migre máquinas virtuais do VMware ESXi para o Red Hat OpenShift Virtualization usando o Shift Toolkit, preparando as máquinas virtuais, convertendo os formatos de disco e configurando o ambiente de destino.
O Shift Toolkit permite a migração de máquinas virtuais entre plataformas de virtualização por meio da conversão do formato do disco e da reconfiguração da rede no ambiente de destino.
Antes de começar
Verifique se os seguintes pré-requisitos foram atendidos antes de iniciar a migração.
-
Ponto de extremidade do cluster OpenShift com os seguintes operadores instalados:
-
Operador de virtualização OpenShift
-
Driver NetApp Trident CSI
-
NMstate
-
-
NetApp Trident CSI configurado com backends e classes de armazenamento apropriados.
-
A política de configuração de rede (NodeNetworkConfigurationPolicy) e as definições de conexão de rede (NetworkAttachmentDefinitions - NAD) estão configuradas com as VLANs apropriadas.
-
O cluster OpenShift está acessível pela rede com as entradas atuais do arquivo de hosts.
-
Privilégios de nível de administrador no cluster
-
Arquivo Kubeconfig baixado
-
Os VMDKs podem ser configurados de várias maneiras: todos os VMDKs podem residir em um único volume NFSv3 (eliminando a necessidade de Storage vMotion), cada VMDK pode ser colocado em seu próprio volume individual ou vários VMDKs podem ser organizados em uma qtree dentro de um volume.
O Shift Toolkit detecta automaticamente o layout e seleciona o método de clonagem e os drivers de armazenamento NAS apropriados. Quando os VMDKs são colocados dentro de uma qtree, o Shift Toolkit utiliza o driver ONTAP-NAS-economy. -
As ferramentas da VMware estão sendo executadas em máquinas virtuais convidadas.
-
As VMs a serem migradas estão em estado RUNNING para preparação.
-
As máquinas virtuais devem ser desligadas antes de iniciar a migração.
-
A remoção das ferramentas VMware ocorre no hipervisor de destino assim que as VMs são ligadas.
-
ONTAP-NAS: Todos os VMDKs podem residir em um único volume ou cada VMDK pode estar em seu próprio volume individual. A seleção de VMs pode ser feita no nível do datastore ou no nível da VM.
-
ONTAP-NAS-Economy: Os VMDKs devem residir em um único volume, e o nome do volume deve seguir a seguinte convenção de nomenclatura:
trident_qtree_pool_<storage-prefix>_<10 random characters>. A seleção de VMs dentro de um grupo de recursos é feita somente no nível do datastore.Para ONTAP-NAS-Economy, o volume com a convenção de nomenclatura especificada acima deve pré-existir e deve ser usado como datastore no VMware vCenter. Isso significa que a máquina virtual deve ser Storage vMotioned para esse datastore específico, ou um datastore existente deve ser renomeado para corresponder à convenção de nomenclatura: trident_qtree_pool_<storage-prefix>_<10 random characters>.Para ONTAP-NAS-Economy, a configuração do backend Trident (TBC) deve ter o parâmetro Deny New Volume Poolsdefinido comotrue. A classe de armazenamento usada também deve restringir o storagePools atbc name: <aggr name where the trident_qtree_pool_<storage-prefix>_<10 random characters> resides>.Exemplo de configuração TBC para o driver ONTAP-NAS-Economy
apiVersion: v1 kind: Secret metadata: name: nas-eco-data-1172-secret namespace: trident type: Opaque stringData: username: <svm-admin-username> password: <svm-admin-password> --- apiVersion: trident.netapp.io/v1 kind: TridentBackendConfig metadata: name: nas-eco-data-1172 namespace: trident spec: backendName: nas-eco-data-1172 credentials: name: nas-eco-data-1172-secret dataLIF: "192.168.1.100" denyNewVolumePools: "False" managementLIF: "192.168.1.50" storageDriverName: ontap-nas-economy svm: data_1172 version: 1O parâmetro denyNewVolumePoolsdeve ser definidotrueimediatamente apóstrident_qtree_pool_<storage-prefix>_<10 random characters>ser criado como parte da criação inicial do PVC. Definir esse valor comotruegarante que Trident use o pool de qtree existente para posicionar os PVCs baseados em qtree.O TBC pode ser corrigido usando o seguinte comando:
oc patch tbc nas-eco-data-1172 -n trident --type=merge -p '{"spec":{"denyNewVolumePools":"true"}}'Exemplo de YAML para classe de armazenamento
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: nas-eco-data-1172 annotations: storageclass.kubernetes.io/is-default-class: "true" provisioner: csi.trident.netapp.io parameters: backendType: ontap-nas-economy fsType: nfs storagePools: "nas-eco-data-1172:NSOL_NetApp_C800_T18U13_02_SSD_CAP_1" allowVolumeExpansion: true reclaimPolicy: Delete volumeBindingMode: Immediate -
ONTAP-SAN: Os VMDKs devem ser colocados em volumes individuais (imitando a estrutura VMDK em um PVC/PV) usando Storage vMotion. A seleção da VM é feita no nível da VM.
-
ONTAP-SAN-Economy: Os VMDKs devem residir em um único volume NFSv3, e o nome do volume deve seguir a seguinte convenção de nomenclatura:
trident_lun_. A seleção de VMs dentro de um grupo de recursos é feita somente no nível do datastore.Para o ONTAP-SAN-Economy, o volume com a convenção de nomenclatura trident_lun_deve pré-existir e deve ser usado como datastore no VMware vCenter. Isso significa que a máquina virtual deve ser Storage vMotioned para esse datastore específico, ou um datastore existente deve ser renomeado para corresponder à convenção de nomenclaturatrident_lun_.Exemplo de configuração TBC para ONTAP-SAN-Economy
apiVersion: v1 kind: Secret metadata: name: ontap-san800-eco-secret namespace: trident type: Opaque stringData: username: <svm-admin-username> password: <svm-admin-password> --- apiVersion: trident.netapp.io/v1 kind: TridentBackendConfig metadata: name: ontap-san800-eco namespace: trident spec: backendName: ontap-san800-eco aggregate: NSOL_NetApp_C800_T18U13_01_SSD_CAP_1 credentials: name: ontap-san800-eco-secret dataLIF: "192.168.1.110" defaults: protocol: iSCSI snapshotPolicy: none spaceAllocate: "true" spaceReserve: none tieringPolicy: none managementLIF: "192.168.1.60" storage: - labels: backend: san800-eco storageDriverName: ontap-san-economy svm: data_1172 version: 1Exemplo de configuração de classe de armazenamento para ONTAP-SAN-Economy
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: sc-ontap-san-eco provisioner: csi.trident.netapp.io parameters: backendType: ontap-san-economy selector: "backend=san800-eco" allowVolumeExpansion: true reclaimPolicy: Delete volumeBindingMode: ImmediatePara ONTAP-SAN e ONTAP-SAN-Economy, as máquinas virtuais (VMs) devem ser vMotioned de qualquer datastore baseado em blocos para volumes ONTAP NFSv3 primeiro. O Shift Toolkit então converterá os VMDKs em LUNs e os importará como PVCs para o namespace respectivo.
A seleção de VMs para grupos de recursos pode ser feita no nível da VM ou no nível do datastore. Dependendo da seleção, o fluxo de trabalho seleciona o driver de armazenamento ONTAP NAS ou SAN apropriado. Por exemplo, se uma única VM for selecionada, o driver ONTAP-NAS será usado. Se vários VMDKs estiverem no mesmo volume, o driver ONTAP-NAS ou ONTAP-NAS-Economy será usado com base no volume de origem e sua SVM, juntamente com o TBC e a classe de armazenamento configurados no lado do OpenShift.
-
Para máquinas virtuais Windows: Use credenciais de administrador local.
-
Para VMs Linux: Use um usuário com permissões para executar comandos sudo sem solicitar senha.
-
Para VMs Windows: Monte a ISO do VirtIO na VM (baixe de"aqui" )
O script de preparação utiliza o pacote .msi para instalar os drivers e o qemu-guest-agents.
Passo 1: Adicione o site de destino (OpenShift)
Adicione o ambiente de virtualização OpenShift de destino ao Shift Toolkit.
-
Clique em Adicionar novo local e selecione Destino.
Mostrar exemplo
-
Insira os detalhes do site de destino:
-
Nome do site: Forneça um nome para o site.
-
Hipervisor: Selecione OpenShift
-
Localização do Site: Selecione a opção padrão
-
Conector: Selecione a opção padrão
-
-
Clique em Continuar.
Mostrar exemplo
-
Insira os detalhes do OpenShift:
-
Endpoint: Nome de domínio totalmente qualificado (FQDN) do endpoint do cluster OpenShift (por exemplo, api.demomigsno.demoval.com)
-
Carregar arquivo kubeconfig: Use o arquivo kubeconfig com permissões mínimas.
A extensão do arquivo deve ser YAML.
Mostrar exemplo
-
-
Clique em Criar site.
Mostrar exemplo
O volume de origem e o de destino serão os mesmos, pois a conversão do formato do disco ocorre no nível do volume, dentro do mesmo volume.
Etapa 2: Criar grupos de recursos
Organize as VMs em grupos de recursos para preservar a ordem de inicialização e as configurações de atraso de inicialização.
Certifique-se de que os arquivos VMDK das máquinas virtuais sejam movidos para volumes de armazenamento de dados individuais em uma SVM ONTAP recém-criada.
-
Acesse Grupos de Recursos e clique em Criar Novo Grupo de Recursos.
-
Selecione o site de origem no menu suspenso e clique em Criar.
-
Forneça os detalhes do grupo de recursos e selecione o fluxo de trabalho:
-
Migração baseada em clones: Executa a migração de ponta a ponta do hipervisor de origem para o hipervisor de destino.
-
Conversão baseada em clone: Converte o formato do disco para o tipo de hipervisor selecionado.
-
-
Clique em Continuar.
-
Selecione as VMs usando a opção de pesquisa.
A seleção de máquinas virtuais para grupos de recursos é baseada na máquina virtual em si, e não no nível do armazenamento de dados. Mostrar exemplo
Mostrar exemplo
-
Atualizar detalhes da migração:
-
Selecione Local de Destino
-
Selecione Entrada OpenShift de destino
-
Selecione a classe de armazenamento
Mostrar exemplo
O backend Trident será mapeado automaticamente para o volume de origem se houver apenas um TBC; no entanto, se houver vários TBCs, o backend poderá ser selecionado.
-
-
Configure a ordem de inicialização e o atraso de inicialização para todas as VMs selecionadas:
-
1: Primeira VM a ser ligada
-
3: Padrão
-
5: Última VM a ser ligada
-
-
Clique em Criar grupo de recursos.
Mostrar exemplo
O grupo de recursos foi criado e está pronto para a configuração do modelo.
Etapa 3: Criar um plano de migração
Crie um plano para definir a migração, incluindo mapeamento de plataformas, configuração de rede e configurações de máquinas virtuais.
-
Navegue até Projetos e clique em Criar novo projeto.
-
Forneça um nome para o modelo e configure os mapeamentos de host:
-
Selecione o Site de Origem e o vCenter associado.
-
Selecione o Local de Destino e o alvo OpenShift associado.
-
Configurar mapeamento de cluster e host
Mostrar exemplo
-
-
Selecione os detalhes do grupo de recursos e clique em Continuar.
-
Defina a ordem de execução para os grupos de recursos, caso existam vários grupos.
-
Configure o mapeamento de rede para as redes lógicas apropriadas.
As definições de conexão de rede já devem estar provisionadas no cluster OpenShift com as opções apropriadas de VLAN e trunk. Para testes de migração, selecione "Não configurar a rede" para evitar conflitos com a rede de produção; atribua as configurações de rede manualmente após a conversão. Mostrar exemplo
-
Analise as classes de armazenamento e os mapeamentos de backend (selecionados automaticamente com base na seleção da VM).
Certifique-se de que os arquivos VMDK sejam movidos para volumes individuais previamente, para que a máquina virtual possa ser criada e ligada a partir do PVC. -
Em Detalhes da VM, selecione Detalhes da configuração e forneça as credenciais da conta de serviço para cada tipo de sistema operacional:
-
Windows: Utilize um usuário com privilégios de administrador local (credenciais de domínio também podem ser usadas).
-
Linux: Utilize um usuário que possa executar comandos sudo sem solicitar senha.
Mostrar exemplo
A seleção de configuração permite que você escolha o formato da imagem do disco, ignore a substituição do prepareVM e escolha se deseja dividir o volume do volume pai. Por padrão, a clonagem dividida está desativada e o fluxo de trabalho usa o formato RAW por padrão.
-
-
Configurar as definições de IP:
-
Não configurar: Opção padrão
-
Manter IP: Manter os mesmos IPs do sistema de origem
-
DHCP: Atribua DHCP às VMs de destino
Certifique-se de que as máquinas virtuais estejam ligadas durante a fase prepareVM e que o VMware Tools esteja instalado.
-
-
Configurar as definições da VM:
-
Redimensionar parâmetros de CPU/RAM (opcional)
-
Modificar a ordem de inicialização e o atraso de inicialização
-
Ligar: Selecione para ligar as VMs após a migração (padrão: LIGADO)
-
Remover ferramentas VMware: Remover as ferramentas VMware após a conversão (padrão: selecionado)
-
Firmware da VM: BIOS > BIOS e EFI > EFI (automático)
-
Manter MAC: Guarde os endereços MAC para fins de licenciamento.
Caso seja necessário manter o nome da interface e o endereço MAC, certifique-se de que as regras udev apropriadas sejam criadas na máquina virtual de origem. -
Substituição da conta de serviço: Especifique uma conta de serviço separada, se necessário.
-
-
Clique em Continuar.
-
(Opcional) Agende a migração selecionando uma data e hora.
Agende as migrações com pelo menos 30 minutos de antecedência para permitir tempo suficiente para a preparação da máquina virtual. -
Clique em Criar Projeto.
O Shift Toolkit inicia uma tarefa prepareVM que executa scripts nas VMs de origem para prepará-las para a migração.
Mostrar exemplo
O processo de preparação:
-
Injeta scripts para atualizar os drivers VirtIO, instalar o qemu-agent, remover as ferramentas da VMware, fazer backup dos detalhes de IP e atualizar o fstab.
-
Utiliza o PowerCLI para conectar-se a máquinas virtuais convidadas (Linux ou Windows) e atualizar drivers VirtIO.
-
Para VMs do Windows: Armazena scripts em
C:\NetApp -
Para VMs Linux: Armazena scripts em
/NetAppe/opt
|
|
Para qualquer sistema operacional de máquina virtual compatível, o Shift Toolkit instala automaticamente os drivers VirtIO necessários antes da conversão do disco para garantir a inicialização bem-sucedida após a conversão. |
Quando o prepareVM for concluído com sucesso, o status do projeto será atualizado para "PrepareVM concluído". A migração ocorrerá no horário agendado ou poderá ser iniciada manualmente clicando na opção Migrar.
Mostrar exemplo
Mostrar exemplo
Etapa 4: Execute a migração
Inicie o fluxo de trabalho de migração para converter máquinas virtuais do VMware ESXi para a virtualização OpenShift.
Todas as máquinas virtuais são desligadas corretamente, de acordo com o cronograma de manutenção planejado.
-
Na planta, clique em Migrar.
Mostrar exemplo
-
O Shift Toolkit executa os seguintes passos:
-
Exclui os snapshots existentes para todas as VMs no blueprint.
-
Aciona snapshots de VM na origem
-
Aciona um snapshot do volume antes da conversão do disco.
-
Clona os volumes individuais
-
Converte arquivos VMDK para o formato RAW para cada arquivo VMDK.
O Shift Toolkit localiza automaticamente todos os VMDKs associados a cada máquina virtual, incluindo o disco de inicialização principal.
-
|
|
Caso existam vários arquivos VMDK, cada VMDK será convertido e colocado em seu próprio PVC com base no driver de armazenamento usado. |
-
Limpa os volumes para que fiquem apenas com o arquivo disk.img.
Com a imagem de disco da máquina virtual convertida para o formato RAW, o Shift Toolkit limpa os volumes, renomeia o arquivo raw para disk.img e atribui as permissões necessárias.
-
Importa os volumes como PVCs usando o Trident import.
Os volumes são então importados como PVCs usando as APIs do NetApp Trident .
-
Cria máquinas virtuais usando arquivos YAML específicos para cada máquina virtual.
Após a importação dos PVCs e a configuração dos PVs, o Shift Toolkit utiliza o OC CLI para criar cada VM, dependendo do sistema operacional, por meio de arquivos YAML.
|
|
As máquinas virtuais são criadas no namespace "Default". |
-
Liga as VMs no destino.
Dependendo do sistema operacional da máquina virtual, o Shift Toolkit atribui automaticamente a opção de inicialização da máquina virtual juntamente com as interfaces do controlador de armazenamento. Para distribuições Linux, utiliza-se VirtIO ou VirtIO SCSI. No Windows, a máquina virtual é ligada com a interface SATA e, em seguida, o script agendado instala automaticamente os drivers VirtIO e altera a interface para VirtIO.
-
Registra redes em cada máquina virtual.
As redes são atribuídas com base na seleção do projeto.
-
Remove as ferramentas VMware e atribui endereços IP usando tarefas cron.
Mostrar exemplo
|
|
A opção de verificação pode ser exercida no projeto assim que a tarefa for concluída. Para obter mais informações, consulte Verificar migração. |
Utilize o Migration Toolkit para virtualização com o Shift Toolkit (abordagem por script)
Esta seção descreve como usar o Migration Toolkit for Virtualization (MTV) com o NetApp Shift Toolkit para uma migração perfeita para o Red Hat OpenShift Virtualization.
Certifique-se de que os seguintes pré-requisitos sejam atendidos:
-
Cluster OpenShift com o operador OpenShift Virtualization e o driver NetApp Trident CSI instalados.
-
MTV 2.9.4 (que inclui o modo de conversão)
-
"Kit de ferramentas de mudança"instalado
Como é utilizada apenas a API do Shift Toolkit, não há necessidade de configurar grupos de recursos ou modelos do Shift Toolkit. -
Privilégios de nível de administrador no cluster OpenShift
-
Uma instância Linux com a ferramenta de linha de comando OC instalada
-
O comando
kubeconfigfoi exportado ou o comandooc loginfoi executado para conectar-se ao cluster. -
Baixe o script chamado "Shift-VM-to-OpenShift-MTV" da interface do Shift Toolkit (Configurações > Acesso do desenvolvedor > Bloqueador de scripts)
-
Descompacte o arquivo:
unzip Shift-VM-to-OpenShift-MTV.zip -
Certifique-se de que o Python 3 esteja instalado:
dnf install python3 -
Instale o OpenJDK 8 ou posterior:
yum install java-1.8.0-openjdk -
Requisitos de instalação:
pip install -r requirements.txt
-
-
Requisitos de Máquina Virtual para MTV: Os VMDKs podem ser organizados de diferentes maneiras: podem ser colocados em um único volume (evitando a necessidade de Storage vMotion), atribuídos individualmente a volumes separados ou agrupados em uma qtree dentro de um volume NFS. O script detecta automaticamente o layout e seleciona o método de clonagem e os drivers de armazenamento NAS apropriados com base no UUID do TBC.
-
Crie planos de migração usando o MTV.
Para aproveitar a conversão rápida de VMDK, crie um plano de migração para as VMs e certifique-se de que os seguintes parâmetros estejam presentes no arquivo YAML:
-
targetNamespace: default -
type: conversion -
storage: {}O plano deve ser criado com antecedência para garantir que as configurações de preservação de IP sejam configuradas pela MTV.
-
-
Mapear VMs do vCenter e volumes no armazenamento ONTAP .
Utilize o script para criar os PVCs necessários e importá-los para o cluster OpenShift. Os PVCs devem conter os seguintes rótulos e anotações:
Etiquetas:
-
vmID e vmUUID no PVC (o Forklift procura por esses valores)
Anotação:
-
O nome do disco vmdk para
forklift.konveyor.io/disk-sourceO script garante que esses atributos sejam definidos para cada PVC e atualiza as permissões do disk.img:
-
"owner": { "id": 107 } -
"group": { "id": 107 } -
"mode": "0655"
-
-
Atualize o arquivo JSON com os seguintes detalhes:
-
* Cluster ONTAP *: Pode ser uma SVM; o vsadmin pode ser usado. Defina splitclone como "False" se o volume clonado não precisar de desanexação imediata.
-
vCenter: Direitos RBAC mínimos para descobrir VMs e arquivos VMDK associados.
-
*Classe de armazenamento Trident *: Deve ser um backend NFS com a versão correta no YAML.
-
OpenShift: Especifique o nome do projeto (o padrão é usado como exemplo)
Mantenha os demais valores como padrão.
-
-
Assim que os pré-requisitos forem atendidos, execute.
python3 main.pyCriar PVCs e importá-los para o cluster OpenShift. -
Após a importação dos PVCs, inicie a migração usando o MTV para criar a VM com a especificação apropriada.
Mostrar exemplo
Mostrar exemplo
-
Converter VMDK com MTV.
O script encontra automaticamente todos os VMDKs associados a cada máquina virtual, incluindo o disco de inicialização principal.
Se houver vários arquivos VMDK, cada um deles será convertido. -
Carregar imagem RAW para virtualização OpenShift.
O script utiliza o Trident CSI para importar volumes como PVCs para o cluster. O arquivo YAML do PVC é preenchido com rótulos e anotações.
-
Crie uma máquina virtual com o MTV.
Após a importação, ligue para o plano da MTV para iniciar a migração. A interface do usuário mostra "Frio", mas com base na especificação YAML de conversão, o MTV verifica cada PVC e o vmID/vmUUID, mapeia-os e inicializa a migração.
Mostrar exemplo
As VMs são criadas no projeto "Padrão" para máquinas virtuais, mas isso pode ser modificado no arquivo YAML do plano de migração do MTV. -
Inicialize a máquina virtual pela primeira vez com o MTV.
Dependendo do sistema operacional da máquina virtual, o MTV atribui automaticamente a opção de inicialização da máquina virtual juntamente com as interfaces do controlador de armazenamento.
Mostrar exemplo
Migração concluída em 6 minutos para uma máquina virtual com disco de dados de 1,5 TB (distribuído em 3 PVCs). Isso demonstra uma abordagem simplificada e de baixo impacto para realocar máquinas virtuais usando o armazenamento ONTAP .
O script pode ser executado usando um arquivo de configuração ou especificando parâmetros. Um exemplo de execução do script usando parâmetros é mostrado abaixo:
O script também suporta clonagem entre SVMs, permitindo que você crie PVCs em diferentes SVMs com base nos parâmetros de entrada fornecidos. python3 main.py --mode params --ontap-server 10.192.102.56 --ontap-username admin --ontap-password 'correct password' --ontap-source-vserver manila --ontap-target-vserver manila --ontap-data-lif 10.63.172.249 --ontap-skip-ssl --vcenter-server 10.63.172.125 --vcenter-username administrator@demoenv.com --vcenter-password 'correct password' --vcenter-skip-ssl --shift-server 10.61.187.117 --shift-username admin --shift-password 'correct password' --trident-backend-name tbc-ontap-manila-nimo --trident-backend-uuid 778245f4-1f50-453c-b81c-3dd82e166bbc --trident-storage-class nimmanila --mtv-project openshift-mtv --mtv-plan casetst --ocp-server https://api.demomigsno.demoval.com:6443 --ocp-token sha256~co89ATebn-ktVyrMbNJUGByVWph_kjLamYtIOPmqfQM --ocp-project default --import-volume --execution-mode clone_shrink --snapshot-prefix ""Após a conclusão da migração, o volume clone precisa ser desanexado. O método utilizado depende da versão do ONTAP: use divisão de clones para ONTAP 9.17.1 e versões posteriores, ou vol move para versões anteriores. Um script para iniciar o processo de desanexação está disponível na pasta "Post migrate" dentro do pacote ZIP fornecido.
Demonstração em vídeo
O vídeo a seguir demonstra o processo descrito nesta solução.