En esta página se muestra cómo crear una copia de seguridad del almacén de datos etcd de tu instalación de GKE en AWS para recuperarlo en caso de que se produzcan eventos que puedan dañar los datos etcd de tu clúster.
Limitaciones
Usar un archivo de copia de seguridad para restaurar los datos de etcd es el último recurso. No recomendamos restaurar desde un archivo de copia de seguridad a menos que el clúster esté completamente dañado. Ponte en contacto con el equipo de Asistencia de Google para decidir la mejor forma de proceder.
Este procedimiento no crea copias de seguridad de los datos de tus cargas de trabajo, incluidos los PersistentVolumes.
Esta copia de seguridad no se puede usar para restaurar un clúster de una versión diferente de GKE en AWS.
Crear una copia de seguridad de un clúster de usuarios
Una copia de seguridad de un clúster de usuarios es una instantánea del almacén etcd del clúster de usuarios. El almacén etcd contiene todos los objetos de Kubernetes y los objetos personalizados que representan el estado del clúster. La instantánea contiene los datos necesarios para recrear las cargas de trabajo sin estado del clúster.
Para crear una instantánea del almacén de datos de etcd, sigue estos pasos:
Abre un shell en la instancia del servicio de gestión que ejecuta etcd para tu clúster.
Busca la dirección IP de la instancia del servicio de gestión de tu clúster.
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)
Usa la herramienta
ssh
para abrir una conexión a la instancia del servicio de gestión.Conexión directa
ssh -i ~/.ssh/anthos-gke ubuntu@$MANAGEMENT_IP
Host bastión
export BASTION_DNS=$(terraform output bastion_dns_name) ssh -i ~/.ssh/anthos-gke -J ubuntu@$BASTION_DNS ubuntu@$MANAGEMENT_IP
Crea un directorio para almacenar los datos de la copia de seguridad de etcd.
mkdir ./etcd-backups
Usa la herramienta de línea de comandos
ps
para encontrar el ID de proceso de etcd en esa instancia.ps -e | grep etcd
El resultado muestra los detalles del proceso de etcd. El primer elemento es el ID de proceso de etcd. En los pasos siguientes, sustituye ETCD_PID por este ID de proceso.
Crea una secuencia de comandos en el sistema de archivos del contenedor etcd para hacer una copia de seguridad. Esta secuencia de comandos ejecuta etcdctl para conectarse al daemon etcd y hacer una instantánea para crear una copia de seguridad de la base de datos 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
Usa el comando
nsenter
para ejecutar la secuencia de comandos en el contenedor de etcd y crear la instantánea.sudo nsenter --all --target ETCD_PID /tmp/etcdbackup.sh
Copia el archivo de la instantánea del contenedor etcd.
sudo cp /proc/ETCD_PID/root/tmp/snapshot.db ./etcd-backups
Copia todos los archivos del directorio /secrets del contenedor etcd en tu directorio de copia de seguridad. Estos archivos contienen los certificados que cifran y validan la comunicación entre etcd y otros procesos del clúster. El archivo de instantánea y los archivos de certificados juntos forman una copia de seguridad completa del estado de tu clúster de etcd.
sudo cp -r /proc/ETCD_PID/root/secrets ./etcd-backups
Usa la herramienta
tar
para agrupar los archivos de copia de seguridad de etc en un archivo tar.tar -cvf etcd-backup.tar etcd-backup
Sal de la máquina local y usa la herramienta
scp
para copiar el archivo etcd-backup.tar de la instancia del servicio de gestión. En este ejemplo se usan las variables de entorno BASTION_DNS y MANAGEMENT_IP definidas anteriormente.scp -i ~/.ssh/anthos-gke -J ubuntu@$BASTION_DNS \ ubuntu@$MANAGEMENT_IP:~/etcd-backup/backup.tar