Crea una copia 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 de etcd para clústeres de Anthos alojados en AWS (GKE en AWS) a fin 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 clústeres de Anthos alojados 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 depósito de etcd, sigue estos pasos:

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

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

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

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

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

Más información