Crear copias de seguridad de clústeres de usuarios en AWS

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:

  1. Abre un shell en la instancia del servicio de gestión que ejecuta etcd para tu clúster.

    1. 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)
      
    2. 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
      
  2. Crea un directorio para almacenar los datos de la copia de seguridad de etcd.

    mkdir ./etcd-backups
    
  3. 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.

  4. 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
    
  5. 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
    
  6. Copia el archivo de la instantánea del contenedor etcd.

    sudo cp /proc/ETCD_PID/root/tmp/snapshot.db ./etcd-backups
    
  7. 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
    
  8. 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
    
  9. 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
    

Más información