Após conectar um cluster Kubernetes de terceiros a um cluster registrado no ACK One, faça backup das aplicações e dos volumes pelo Cloud Backup e restaure-os em um cluster ACK para realizar a migração entre nuvens.
Este exemplo demonstra a migração ponta a ponta de uma aplicação MySQL.
Limitações
Analise estas restrições antes de começar. Violações durante a migração bloqueiam o progresso.
Plug-in CSI obrigatório no cluster de restauração. Clusters que utilizam FlexVolume, ou que usam
csi-compatible-controllercom FlexVolume, não oferecem suporte à restauração.Requisitos de versão do Kubernetes. Cluster de origem: Kubernetes 1.16 ou superior. Cluster ACK de restauração: Kubernetes 1.18 ou superior.
Associação única do cofre. Cada cofre de backup pode ser associado a um cluster de restauração apenas uma vez.
O cluster registrado, o cluster ACK e o bucket do OSS devem estar na mesma região. A distribuição entre regiões diferentes causa falha no backup e na restauração.
Como funciona
Conecte seu cluster Kubernetes de terceiros a um cluster registrado no ACK One.
Faça backup da aplicação e de seus volumes em um bucket do OSS pelo Cloud Backup.
Associe o cofre de backup ao cluster ACK de destino.
Restaure a aplicação no cluster ACK, com conversão automática da StorageClass para uma classe de armazenamento nativa da Alibaba Cloud.
Pré-requisitos
Certifique-se de atender aos seguintes requisitos:
Um registered cluster no ACK One conectado a um cluster Kubernetes de terceiros (Kubernetes 1.16 ou superior).
Um ACK managed cluster ou ACK dedicated cluster (Kubernetes 1.18 ou superior) na mesma região do cluster registrado.
Cluster backup ativado em ambos os clusters.
Cloud Backup ativado.
Se o cluster registrado se conectar via CEN, Express Connect ou VPN: configure uma rota para a rede interna regional do bucket do OSS. Consulte Internal OSS endpoints and VIP ranges.
Antes de restaurar, instale e configure os add-ons necessários no cluster ACK:
aliyun-acr-credential-helper: Conceda permissões ao cluster e configure
acr-configuration.alb-ingress-controller: Configure um
ALBConfig.
Observações de uso
Ao fazer backup de volumes locais, crie PVs e PVCs para montá-los.
Para backups de armazenamento de objetos, arquivos ou blocos de terceiros, monte os volumes com PVs e PVCs usando o plug-in CSI.
Preparações
Verifique os itens abaixo antes de executar o backup.
No cluster registrado
É necessário ter um usuário RAM com permissões de OSS e Cloud Backup, além de um Secret chamado alibaba-addon-secret contendo o AccessKey ID e o Secret desse usuário no namespace csdr. Confirme executando:
kubectl get secret alibaba-addon-secret -n csdr
Saída esperada:
alibaba-addon-secret Opaque 2 5d22h
No cluster ACK
ACK managed cluster: O Cloud Backup está ativado e existe um bucket do OSS chamado
cnfs-oss-****.ACK dedicated cluster: A função RAM do worker possui permissões de OSS e Cloud Backup. Consulte Install migrate-controller and grant permissions.
Etapa 1: Implantar a aplicação no cluster Kubernetes externo
Execute todos os comandos no cluster Kubernetes externo (cluster de origem conectado ao seu cluster registrado).
Este exemplo utiliza uma aplicação MySQL com uma PVC chamada mysql-pvc, um PV chamado mysql-pv e um caminho de montagem /mnt.
-
Crie um namespace chamado
test1:kubectl create namespace test1 Monte o volume da aplicação MySQL com um PV e uma PVC usando o plug-in CSI. Verifique a documentação de CSI do seu provedor de nuvem. Caso não haja suporte a CSI, conecte-se ao cluster registrado para utilizar o plug-in CSI da Alibaba Cloud.
-
Confirme se a aplicação está em execução:
kubectl -n test1 get pod | grep mysql-stsSaída esperada:
mysql-sts-0 1/1 Running 0 1m02s -
Verifique se o PV inclui campos CSI:
kubectl -n test1 get pv mysql-pv -oyamlSaída esperada (trecho):
csi: driver: **** volumeAttributes: xxxx: xxxx xxxx: xxxx volumeHandle: mysql-pv -
Acesse o container do MySQL:
kubectl -n test1 exec -it mysql-sts-0 -- /bin/bash -
Crie arquivos de teste para validar a restauração posteriormente:
cd /mnt && touch test && lsSaída esperada:
test
Suspenda as operações de gravação antes de iniciar o backup para garantir a consistência dos dados.
Etapa 2: Fazer backup da aplicação no cluster registrado
Realize todas as operações no cluster registrado no console do ACK.
Caso não exista um cofre de backup, crie um. Consulte Create a backup vault.
-
Crie uma tarefa de backup sob demanda chamada
mysql-backupno cluster registrado. Consulte Create a backup task.Parâmetro
Valor
Name
mysql-backupBackup Vaults
Selecione o cofre criado
Backup Namespaces
test1Volume Backup
Marque Volume Backup para incluir dados persistentes
Na página Application Backup, clique em Backup Records. Aguarde até que
mysql-backupmude de InProgress para Completed.
Etapa 3: Associar o cofre de backup ao cluster ACK
Realize todas as operações no cluster ACK no console do ACK.
Se você estiver usando um cofre de backup recém-criado ou ainda não o tiver associado a este cluster ACK, faça a associação antes de restaurar. Cada cofre pode ser associado apenas uma vez. Após a inicialização, os backups são sincronizados automaticamente.
Na página Application Backup, clique em Restore.
No painel Restore, insira um Name, selecione Backup Vaults e clique em Initialize Backup Vault.
Após a inicialização, selecione a tarefa de restauração no cofre de backup e clique em OK.
Na aba Backup Records, aguarde o aparecimento de
mysql-backupna lista.
Etapa 4: Restaurar a aplicação no cluster ACK
Realize todas as operações no cluster ACK no console do ACK.
Durante a restauração, o cluster ACK monta dinamicamente uma PVC com a StorageClass alibabacloud-cnfs-nas (Alibaba Cloud NAS) para a aplicação MySQL e restaura os dados no volume associado.
-
Crie uma tarefa de restauração chamada
mysql-restore. Consulte Restore applications and volumes.Parâmetro
Valor
Name
mysql-restoreBackup Vaults
Selecione o cofre criado
Select Backup
mysql-backupReset Namespace
Altere
test1paratest2StorageClass Conversion
Para
mysql-pvc, selecionealibabacloud-cnfs-nas Clique em View Restoration Records. Aguarde até que
mysql-restoremude de InProgress para Completed.-
Verifique se a aplicação está em execução:
kubectl -n test2 get pod | grep mysql-stsSaída esperada:
mysql-sts-0 1/1 Running 0 4s -
Valide a restauração dos dados:
-
Confirme se a StorageClass da PVC é
alibabacloud-cnfs-nas:kubectl -n test2 get pvc | grep mysql-pvcSaída esperada:
mysql-pvc Bound nas-**** 25Gi RWO alibabacloud-cnfs-nas 3m24s -
Verifique se a PVC está montada no pod do MySQL:
kubectl -n test2 describe pvc mysql-pvc | grep "Used By"Saída esperada:
Used By: mysql-sts-0 -
Acesse o container do MySQL e verifique os dados de teste:
kubectl -n test2 exec -it mysql-sts-0 -- /bin/bashcd /mnt && lsSaída esperada:
testA presença do arquivo de teste confirma que a restauração dos dados foi bem-sucedida.
-
Próximas etapas
Consulte Overview of registered clusters para obter detalhes sobre operações de backup e restauração.
Configure componentes adicionais do sistema ACK para garantir a compatibilidade da aplicação. Consulte Install migrate-controller and grant permissions.