Todos os produtos
Search
Central de documentação

Container Service for Kubernetes:Migrate applications from a self-managed Kubernetes cluster to an ACK cluster

Última atualização: Jun 27, 2026

O backup center permite fazer backup de aplicações e dados implantados em um cluster registrado do ACK One e restaurá-los em um cluster ACK online, facilitando a migração rápida de aplicações offline para um ambiente online. Este tópico descreve como usar o backup center para migrar aplicações de um cluster offline conectado a um cluster registrado do ACK One para um cluster ACK online.

Pré-requisitos

  • Um cluster registrado do ACK One foi criado e conectado a um cluster de data center local. O cluster Kubernetes autogerenciado deve estar na versão 1.16 ou posterior.

  • Um cluster gerenciado pelo ACK foi criado para atuar como cluster de restauração. O cluster de restauração deve estar na mesma região do cluster registrado. Recomenda-se o Kubernetes 1.18 ou posterior.

    Importante
    • O cluster de destino deve usar o plugin de armazenamento Container Storage Interface (CSI). Não é possível restaurar dados em clusters que usam o plugin FlexVolume ou ambos os plugins CSI e FlexVolume por meio do componente csi-compatible-controller.

    • O backup center foca no backup e na recuperação de aplicações de negócios. Antes de iniciar uma tarefa de restauração, instale e configure os componentes de sistema necessários no cluster de destino. Exemplo:

      • Componente ACR sem senha: conceda permissões e configure o acr-configuration para o cluster de destino.

      • Componente ALB Ingress: configure previamente o ALBConfig e outras definições.

  • Verifique se tanto o cluster registrado do ACK One quanto o cluster ACK têm o componente de serviço de backup instalado e as permissões configuradas.

  • Para um cluster registrado do ACK One conectado a uma Virtual Private Cloud (VPC) via Cloud Enterprise Network (CEN), Express Connect ou gateway VPN, configure uma rota para o endpoint interno do Object Storage Service (OSS). Para mais informações, consulte Acessar o OSS por endpoints internos e nomes de domínio de bucket.

  • O serviço Cloud Backup está ativado.

Cenários

Backup em nuvem e recuperação de desastres: solução integrada para backup, recuperação de desastres e migração que ajuda a migrar aplicações rapidamente para a nuvem e implementar a recuperação de desastres de dados. Para mais informações, consulte Visão geral dos clusters registrados.

Observações

  • Ao fazer backup de dados de um cluster externo, monte um volume local como PV e PVC. O plugin CSI da Alibaba Cloud oferece suporte à montagem de volumes em um cluster registrado do ACK One. Para mais informações, consulte Volumes locais.

  • O cluster registrado do ACK One, o cluster ACK e o bucket do OSS devem estar na mesma região.

Preparações

Este tópico usa uma aplicação MySQL como exemplo para descrever como implantar e fazer backup da aplicação em um cluster externo e, em seguida, restaurá-la em um cluster ACK. Antes de migrar a aplicação, garanta que o cluster registrado do ACK One e o cluster ACK estejam na mesma região, que o recurso de backup de cluster esteja habilitado em ambos e que os seguintes requisitos sejam atendidos:

  • Para o cluster registrado do ACK One: crie um usuário RAM e conceda a ele permissões no OSS e no Cloud Backup. Em seguida, use o AccessKey ID e o AccessKey secret desse usuário RAM para criar um Secret chamado alibaba-addon-secret no namespace csdr namespace do cluster registrado do ACK One.

    Execute o comando a seguir para verificar se o Secret alibaba-addon-secret existe.

    kubectl get secret alibaba-addon-secret -n csdr

    Saída esperada:

    alibaba-addon-secret   Opaque   2      5d22h
  • Para o cluster ACK:

Etapa 1: Implantar a aplicação no cluster externo

  1. Execute o comando a seguir para criar o namespace test1:

    kubectl create namespace test1
  2. No nó do qual deseja fazer backup, execute o comando a seguir para criar um caminho de montagem:

    mkdir /mnt/disk
  3. Crie um arquivo chamado app-mysql.yaml com o conteúdo a seguir. Substitua <YOUR-HOSTNAME> pelo nome do nó do qual será feito o backup. Substitua os valores de username e password pelo nome de usuário e pela senha da aplicação MySQL codificados em Base64.

    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: mysql-sts
      namespace: test1
    spec:
      selector:
        matchLabels:
          app: mysql-sts
      serviceName: mysql-sts
      template:
        metadata:
          labels:
            app: mysql-sts
        spec:
          containers:
          - name: mysql-sts
            image: registry.cn-hangzhou.aliyuncs.com/arms-docker-repo/arms-demo-mysql:v0.1
            env:
            - name: MYSQL_ROOT_PASSWORD
              valueFrom:
                secretKeyRef:
                  name: mysql-pass
                  key: password
            ports:
            - containerPort: 3306
              name: mysql-sts
            volumeMounts:
            - name: mysql
              mountPath: /var/lib/mysql
          volumes:
            - name: mysql
              persistentVolumeClaim:
                claimName: example-pvc
    ---
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: example-pv
    spec:
      capacity:
        storage: 100Gi
      volumeMode: Filesystem
      accessModes:
      - ReadWriteOnce
      persistentVolumeReclaimPolicy: Delete
      storageClassName: local-storage
      local:
        path: /mnt/disk
      nodeAffinity:
        required:
          nodeSelectorTerms:
          - matchExpressions:
            - key: kubernetes.io/hostname
              operator: In
              values:
              - <YOUR-HOSTNAME> # The name of the node to back up.
    ---
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: example-pvc
      namespace: test1
    spec:
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: 25Gi
      storageClassName: local-storage
      volumeName: example-pv
    ---
    apiVersion: v1
    kind: Secret
    metadata:
      name: mysql-pass
      namespace: test1
    type: Opaque
    data:
      username: dGVz****             # The Base64-encoded username of the MySQL application to be backed up. Replace the value with the actual username.
      password: dGVzdDEt****     # The Base64-encoded password of the MySQL application to be backed up. Replace the value with the actual password.
  4. Execute o comando a seguir para implantar a aplicação MySQL, montar o disco local como PV e criar o PV e a PVC associados:

    kubectl create -f app-mysql.yaml

    Saída esperada:

    statefulset.apps/mysql-sts created
    persistentvolume/example-pv created
    persistentvolumeclaim/example-pvc created
    secret/mysql-pass created
  5. Execute o comando a seguir para verificar se a aplicação MySQL foi implantada:

    kubectl get pod -n test1 | grep mysql-sts

    Saída esperada:

    mysql-sts-0   1/1     Running   1 (4m51s ago)   4m58s

Etapa 2: Fazer backup da aplicação e dos dados

O cluster externo está conectado ao cluster registrado do ACK One. Execute as tarefas de backup diretamente no cluster registrado do ACK One.

  1. Crie um cofre de backup no cluster registrado do ACK One. Para mais informações, consulte Criar um cofre de backup.

  2. Crie um backup instantâneo chamado mysql no cluster registrado do ACK One. Para mais informações, consulte Criar um plano de backup ou um backup instantâneo.

    Defina Name como mysql. Em Backup Vaults, selecione o cofre criado na etapa anterior. Para Backup Namespaces, selecione test1.

  3. Na página Application Backup, clique em Backup Records para visualizar o status da tarefa mysql-backup. Quando o status mudar de InProgress para Completed, o backup estará concluído.

Etapa 3: Restaurar a aplicação no cluster ACK

Esta seção demonstra como restaurar a aplicação MySQL no cluster ACK e converter seu armazenamento para a StorageClass alibabacloud-cnfs-nas. Siga as etapas abaixo:

  1. Crie uma tarefa de restauração chamada mysql-restore para implantar a aplicação MySQL no namespace test2 do cluster ACK e converter a StorageClass para alibabacloud-cnfs-nas. Para mais informações, consulte Restaurar aplicações e volumes de dados.

    Parâmetro

    Valor

    Name

    mysql-restore

    Backup Vaults

    Selecione o cofre de backup criado. Se o botão Initialize Backup Vault aparecer, clique nele e aguarde a sincronização dos registros de backup com o cluster.

    Select Backup

    mysql

    Reset Namespace

    Remapeie o namespace de test1 para test2.

    StorageClass Conversion

    Na lista de PVCs a serem convertidas, selecione a StorageClass alibabacloud-cnfs-nas para example-pvc.

  2. À direita de Restore, clique em View Restoration Records. A restauração estará completa quando o status da tarefa mudar de InProgress para Completed.

  3. Execute o comando a seguir no cluster ACK para verificar se a aplicação MySQL foi implantada:

    kubectl get pod -n test2 | grep mysql-sts

    Saída esperada:

    mysql-sts-0   1/1     Running   0          4s
  4. Execute os comandos a seguir no cluster ACK para confirmar que os dados foram restaurados:

    1. Verifique se os dados foram restaurados na StorageClass alibabacloud-cnfs-nas.

      kubectl get pvc -n test2 | grep example-pvc

      Saída esperada:

      example-pvc   Bound    nas-acde4acd-59b6-4332-90af-b74ef6******   25Gi       RWO            alibabacloud-cnfs-nas   31m
    2. Confirme se a example-pvc está montada na aplicação MySQL.

      kubectl describe pvc example-pvc -n test2 | grep "Used By"

      Saída esperada:

      Used By:       mysql-sts-0