En esta página, se muestra cómo crear una copia de seguridad del almacén de datos de etcd para la instalación de GKE en AWS con el objetivo de recuperar eventos que puedan dañar los datos etcd del clúster.
Limitaciones
Advertencia: El uso de un archivo de copia de seguridad para restablecer los datos etcd es el último recurso. No recomendamos restablecer desde un archivo de copia de seguridad, a menos que el clúster esté dañado por completo. Comunícate con Atención al cliente de Google para obtener ayuda a fin de tomar la mejor decisión.
Este procedimiento no crea una copia de seguridad de los datos de las cargas de trabajo, incluidos los PersistentVolumes.
Esta copia de seguridad no se puede usar para restablecer un clúster desde una versión diferente de GKE en AWS.
Crea una copia de seguridad de un clúster de usuario
Una copia de seguridad de un clúster de usuario es una instantánea del depósito de etcd del clúster de usuario. En el almacen de etcd, están todos los objetos de Kubernetes y los objetos personalizados que representan el estado del clúster. En esta instantánea, están los datos necesarios para volver a crear 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 una shell en la instancia del servicio de administración que ejecuta etcd para tu clúster.
Busca la dirección IP de la instancia del servicio de administració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 de
ssh
para abrir una conexión a la instancia de servicio de administración.Conexión directa
ssh -i ~/.ssh/anthos-gke ubuntu@$MANAGEMENT_IP
Host de 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 copia de seguridad de etcd.
mkdir ./etcd-backups
Usa la herramienta de línea de comandos de
ps
para encontrar el ID del proceso etcd en esa instancia.ps -e | grep etcd
En el resultado, se muestran detalles de tu proceso de etcd. El primer elemento es el ID del proceso de etcd. En los siguientes pasos, reemplaza ETCD_PID por este ID del proceso.
Crea una secuencia de comandos dentro del sistema de archivos del contenedor de etcd para tomar una instantánea. En esta secuencia de comandos, se ejecuta etcdctl para conectarse al daemon de etcd y realizar una instantánea a fin de 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 dentro del contenedor de etcd a fin de crear la instantánea.sudo nsenter --all --target ETCD_PID /tmp/etcdbackup.sh
Copia el archivo de instantánea del contenedor de etcd.
sudo cp /proc/ETCD_PID/root/tmp/snapshot.db ./etcd-backups
Copia todos los archivos en el directorio /secrets del contenedor de etcd en el directorio de copia de seguridad. Estos archivos contienen los certificados que encriptan y validan la comunicación entre etcd y otros procesos en el clúster. En conjunto, el archivo de la instantánea y los archivos de certificados son una copia de seguridad completa del estado del 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 conveniente.tar -cvf etcd-backup.tar etcd-backup
Sal a la máquina local y usa la herramienta
scp
para copiar el archivo etcd-backup.tar de la instancia del servicio de administración. En este ejemplo, se usan las variables de entorno BASTION_DNS y MANAGEMENT_IP que se definieron antes.scp -i ~/.ssh/anthos-gke -J ubuntu@$BASTION_DNS \ ubuntu@$MANAGEMENT_IP:~/etcd-backup/backup.tar