Sauvegarder des clusters d'utilisateur sur AWS

Cette page explique comment sauvegarder le datastore etcd pour votre installation de GKE sur AWS (GKE sur AWS) afin de récupérer d'événements susceptibles d'endommager les données etcd de votre cluster.

Limites

  • L'utilisation d'un fichier de sauvegarde pour restaurer vos données etcd est un dernier recours. Nous vous déconseillons d'effectuer une restauration à partir d'un fichier de sauvegarde, sauf si le cluster est complètement endommagé. Contactez l'assistance Google si vous avez besoin d'aide pour choisir la meilleure solution.

  • Cette procédure ne sauvegarde pas les données de vos charges de travail, y compris les objets PersistentVolume.

  • Cette sauvegarde ne peut pas être utilisée pour restaurer un cluster à partir d'une version différente de GKE sur AWS.

Sauvegarder un cluster d'utilisateur

Une sauvegarde de cluster d'utilisateur est un instantané du magasin etcd du cluster d'utilisateur. Le magasin etcd contient tous les objets Kubernetes et les objets personnalisés qui représentent l'état du cluster. L'instantané contient les données requises pour recréer les charges de travail sans état du cluster.

Pour créer un instantané du datastore etcd, procédez comme suit :

  1. Ouvrez une interface système sur l'instance de service de gestion exécutant etcd pour votre cluster.

    1. Recherchez l'adresse IP de l'instance de service de gestion de votre 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)
      
    2. Utilisez l'outil ssh pour ouvrir une connexion à l'instance de service de gestion.

      Connexion directe

      ssh -i ~/.ssh/anthos-gke ubuntu@$MANAGEMENT_IP
      

      Hôte bastion

      export BASTION_DNS=$(terraform output bastion_dns_name)
      ssh -i ~/.ssh/anthos-gke -J ubuntu@$BASTION_DNS ubuntu@$MANAGEMENT_IP
      
    .
  2. Créez un répertoire pour stocker les données de sauvegarde etcd.

    mkdir ./etcd-backups
    
  3. Utilisez l'outil de ligne de commande ps pour trouver l'ID du processus etcd sur cette instance.

    ps -e | grep etcd
    

    Le résultat affiche les détails de votre processus etcd. Le premier élément est l'ID du processus etcd. Dans les étapes suivantes, remplacez ETCD_PID par cet ID de processus.

  4. Créez un script dans le système de fichiers du conteneur etcd pour prendre un instantané. Ce script exécute etcdctl pour se connecter au daemon etcd et effectuer un instantané pour sauvegarder la base de données 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. Utilisez la commande nsenter pour exécuter le script dans le conteneur etcd afin de créer l'instantané.

    sudo nsenter --all --target ETCD_PID /tmp/etcdbackup.sh
    
  6. Copiez le fichier d'instantané hors du conteneur etcd.

    sudo cp /proc/ETCD_PID/root/tmp/snapshot.db ./etcd-backups
    
  7. Copiez tous les fichiers du répertoire "/secrets" du conteneur etcd dans votre répertoire de sauvegarde. Ces fichiers contiennent les certificats qui chiffrent et valident la communication entre le processus etcd et les autres processus du cluster. Le fichier d'instantané et les fichiers de certificats constituent une sauvegarde complète de l'état de votre cluster etcd.

    sudo cp -r /proc/ETCD_PID/root/secrets ./etcd-backups
    
  8. Utilisez l'outil tar pour regrouper les fichiers "etc-backup" dans un fichier tar pratique.

    tar -cvf etcd-backup.tar etcd-backup
    
  9. Quittez pour revenir sur votre ordinateur local et utilisez l'outil scp pour copier le fichier "etcd-backup.tar" à partir de l'instance de service de gestion. Cet exemple utilise les variables d'environnement "BASTION_DNS" et "MANAGEMENT_IP" définies précédemment.

    scp -i ~/.ssh/anthos-gke -J ubuntu@$BASTION_DNS \
     ubuntu@$MANAGEMENT_IP:~/etcd-backup/backup.tar
    

Pour plus d'informations