Fazer cópias de segurança de clusters de utilizadores na AWS

Esta página mostra como fazer uma cópia de segurança do arquivo de dados etcd para a sua instalação do GKE no AWS para recuperação de eventos que possam danificar os dados etcd do cluster.

Limitações

  • A utilização de um ficheiro de cópia de segurança para restaurar os seus dados etcd é um último recurso. Não recomendamos o restauro a partir de um ficheiro de cópia de segurança, a menos que o cluster esteja completamente danificado. Contacte o Apoio técnico da Google para receber ajuda na decisão do melhor curso de ação.

  • Este procedimento não faz uma cópia de segurança dos dados das suas cargas de trabalho, incluindo os PersistentVolumes.

  • Não é possível usar esta cópia de segurança para restaurar um cluster de uma versão diferente do GKE no AWS.

Fazer uma cópia de segurança de um cluster de utilizadores

Uma cópia de segurança do cluster de utilizadores é uma imagem instantânea do armazenamento etcd do cluster de utilizadores. O armazenamento etcd contém todos os objetos Kubernetes e objetos personalizados que representam o estado do cluster. A captura de ecrã contém os dados necessários para recriar as cargas de trabalho sem estado do cluster.

Para criar uma imagem instantânea do arquivo de dados etcd, siga estes passos:

  1. Abra uma shell na instância do serviço de gestão que executa o etcd para o seu cluster.

    1. Encontre o endereço IP da instância do serviço de gestão do seu cluster.

      export CLUSTER_ID=$(terraform output cluster_id)
      export MANAGEMENT_IP=$(aws ec2 describe-instances \
        --filters "Name=tag:Name,Values=$CLUSTER_ID-management-0" \
        --query "Reservations[*].Instances[*].PrivateIpAddress" \
        --output text)
      
    2. Use a ferramenta ssh para abrir uma ligação à instância do serviço de gestão.

      Ligação direta

      ssh -i ~/.ssh/anthos-gke ubuntu@$MANAGEMENT_IP
      

      Bastion host

      export BASTION_DNS=$(terraform output bastion_dns_name)
      ssh -i ~/.ssh/anthos-gke -J ubuntu@$BASTION_DNS ubuntu@$MANAGEMENT_IP
      
  2. Crie um diretório para armazenar os dados da cópia de segurança do etcd.

    mkdir ./etcd-backups
    
  3. Use a ferramenta de linha de comandos ps para encontrar o ID do processo do etcd na instância.

    ps -e | grep etcd
    

    O resultado mostra detalhes do seu processo etcd. O primeiro elemento é o ID do processo do etcd. Nos passos seguintes, substitua ETCD_PID por este ID do processo.

  4. Crie um script no sistema de ficheiros do contentor etcd para tirar um instantâneo. Este script executa o etcdctl para estabelecer ligação ao daemon etcd e fazer uma captura instantânea para fazer uma cópia de segurança da base de dados etcd.

    cat << EOT > /tmp/etcdbackup.sh
    # Extract a snapshot of the anthos-gke etcd state database
    
    export ETCDCTL_API=3
    
    etcdctl \
     --endpoints=https://127.0.0.1:2379 \
     --cacert=/secrets/server-ca.crt \
     --cert=/secrets/server.crt \
     --key=/secrets/server.key \
     snapshot save /tmp/snapshot.db
    EOT
    
    chmod a+x /tmp/etcdbackup.sh
    sudo mv /tmp/etcdbackup.sh /proc/ETCD_PID/root/tmp/etcdbackup.sh
    
  5. Use o comando nsenter para executar o script no contentor etcd para criar a captura de ecrã.

    sudo nsenter --all --target ETCD_PID /tmp/etcdbackup.sh
    
  6. Copie o ficheiro de instantâneo do contentor etcd.

    sudo cp /proc/ETCD_PID/root/tmp/snapshot.db ./etcd-backups
    
  7. Copie todos os ficheiros no diretório /secrets do contentor etcd para o seu diretório de cópia de segurança. Estes ficheiros contêm os certificados que encriptam e validam a comunicação entre o etcd e outros processos no cluster. Em conjunto, o ficheiro de instantâneo e os ficheiros de certificados são uma cópia de segurança completa do estado do cluster etcd.

    sudo cp -r /proc/ETCD_PID/root/secrets ./etcd-backups
    
  8. Use a ferramenta tar para agrupar os ficheiros etc-backup num ficheiro tar conveniente.

    tar -cvf etcd-backup.tar etcd-backup
    
  9. Saia para a sua máquina local e use a ferramenta scp para copiar o ficheiro etcd-backup.tar da instância do serviço de gestão. Este exemplo usa as variáveis de ambiente BASTION_DNS e MANAGEMENT_IP definidas anteriormente.

    scp -i ~/.ssh/anthos-gke -J ubuntu@$BASTION_DNS \
     ubuntu@$MANAGEMENT_IP:~/etcd-backup/backup.tar
    

Para Mais Informações