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:
Abra uma shell na instância do serviço de gestão que executa o etcd para o seu cluster.
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)
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
Crie um diretório para armazenar os dados da cópia de segurança do etcd.
mkdir ./etcd-backups
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.
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
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
Copie o ficheiro de instantâneo do contentor etcd.
sudo cp /proc/ETCD_PID/root/tmp/snapshot.db ./etcd-backups
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
Use a ferramenta
tar
para agrupar os ficheiros etc-backup num ficheiro tar conveniente.tar -cvf etcd-backup.tar etcd-backup
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