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 :
Ouvrez une interface système sur l'instance de service de gestion exécutant etcd pour votre cluster.
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)
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
Créez un répertoire pour stocker les données de sauvegarde etcd.
mkdir ./etcd-backups
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.
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
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
Copiez le fichier d'instantané hors du conteneur etcd.
sudo cp /proc/ETCD_PID/root/tmp/snapshot.db ./etcd-backups
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
Utilisez l'outil
tar
pour regrouper les fichiers "etc-backup" dans un fichier tar pratique.tar -cvf etcd-backup.tar etcd-backup
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
- Consultez la page de manuel sur scp.
- Consultez la page de manuel sur etcdctl.
- Consultez la page de manuel sur tar.