Nesta página, mostramos como fazer backup do armazenamento de dados etcd para sua instalação do GKE na AWS para recuperação de eventos que podem danificar os dados etcd do cluster.
Limitações
Usar um arquivo de backup para restaurar os dados do etcd é o último recurso. Não recomendamos a restauração de um arquivo de backup, a menos que o cluster esteja completamente corrompido. Entre em contato com o Suporte do Google e receba ajuda para decidir a melhor solução.
Esse procedimento não faz backup de dados das cargas de trabalho, incluindo PersistentVolumes.
Esse backup não pode ser usado para restaurar um cluster de uma versão diferente do GKE na AWS.
Como fazer backup de um cluster de usuário
Um backup de cluster de usuário é um snapshot do armazenamento etcd do cluster de usuário. O armazenamento etcd contém todos os objetos do Kubernetes e objetos personalizados que representam o estado do cluster. O snapshot contém os dados necessários para recriar as cargas de trabalho sem estado do cluster.
Para criar um snapshot do armazenamento de dados etcd, execute as seguintes etapas:
Abra um shell na instância de serviço de gerenciamento que executa o etcd para o cluster.
Encontre o endereço IP da instância de serviço de gerenciamento 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)
Use a ferramenta
ssh
para abrir uma conexão com a instância do serviço de gerenciamento.Conexã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
Crie um diretório para armazenar os dados de backup do etcd.
mkdir ./etcd-backups
Use a ferramenta de linha de comando
ps
para encontrar o ID do processo do etcd nessa instância.ps -e | grep etcd
A saída mostra detalhes do processo etcd. O primeiro elemento é o ID do processo do etcd. Nas etapas a seguir, substitua ETCD_PID por esse ID do processo.
Crie um script no sistema de arquivos do contêiner do etcd para tirar um snapshot. Esse script executa o etcdctl para se conectar ao daemon do etcd e executa um snapshot para fazer backup do banco de dados do 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
Use o comando
nsenter
para executar o script no contêiner etcd para criar o snapshot.sudo nsenter --all --target ETCD_PID /tmp/etcdbackup.sh
Copie o arquivo de snapshot do contêiner do etcd.
sudo cp /proc/ETCD_PID/root/tmp/snapshot.db ./etcd-backups
Copie todos os arquivos no diretório /secrets do contêiner do etcd para o diretório de backup. Esses arquivos contêm os certificados que criptografam e validam a comunicação entre o etcd e outros processos no cluster. Juntos, o arquivo de snapshot e os arquivos de certificados são um backup completo do status do cluster do etcd.
sudo cp -r /proc/ETCD_PID/root/secrets ./etcd-backups
Use a ferramenta
tar
para agrupar os arquivos de backup etc em um arquivo tar conveniente.tar -cvf etcd-backup.tar etcd-backup
Saia da máquina local e use a ferramenta
scp
para copiar o arquivo etcd-backup.tar da instância do serviço de gerenciamento. Neste exemplo, usamos 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