Halaman ini menunjukkan cara mencadangkan penyimpanan data etcd untuk GKE pada penginstalan AWS guna pemulihan dari peristiwa yang dapat merusak data etcd cluster Anda.
Batasan
Menggunakan file cadangan untuk memulihkan data etcd adalah pilihan terakhir. Kami tidak merekomendasikan pemulihan dari file cadangan kecuali jika cluster benar-benar rusak. Hubungi dukungan Google untuk mendapatkan bantuan dalam memutuskan tindakan terbaik.
Prosedur ini tidak mencadangkan data dari workload Anda, termasuk PersistentVolumes.
Cadangan ini tidak dapat digunakan untuk memulihkan cluster dari versi GKE yang berbeda di AWS.
Mencadangkan cluster pengguna
Cadangan cluster pengguna adalah snapshot dari penyimpanan etcd cluster pengguna. Penyimpanan etcd berisi semua objek Kubernetes dan objek kustom yang mewakili status cluster. Snapshot berisi data yang diperlukan untuk membuat ulang workload stateless cluster.
Untuk membuat snapshot penyimpanan data etcd, lakukan langkah-langkah berikut:
Buka shell pada instance layanan pengelolaan yang menjalankan etcd untuk cluster Anda.
Temukan alamat IP instance layanan pengelolaan cluster Anda.
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)
Gunakan alat
ssh
untuk membuka koneksi ke instance layanan pengelolaan.Koneksi langsung
ssh -i ~/.ssh/anthos-gke ubuntu@$MANAGEMENT_IP
{i>Bastion host<i}
export BASTION_DNS=$(terraform output bastion_dns_name) ssh -i ~/.ssh/anthos-gke -J ubuntu@$BASTION_DNS ubuntu@$MANAGEMENT_IP
Buat direktori untuk menyimpan data cadangan etcd.
mkdir ./etcd-backups
Gunakan alat command line
ps
untuk menemukan ID proses dari proses etcd pada instance tersebut.ps -e | grep etcd
Output-nya menampilkan detail proses etcd Anda. Elemen pertama adalah ID proses etcd. Pada langkah-langkah berikut, ganti ETCD_PID dengan ID proses ini.
Buat skrip dalam sistem file container etcd untuk mengambil snapshot. Skrip ini menjalankan etcdctl untuk terhubung ke daemon etcd dan menjalankan snapshot untuk mencadangkan database 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
Gunakan perintah
nsenter
untuk menjalankan skrip dalam container etcd guna membuat snapshot.sudo nsenter --all --target ETCD_PID /tmp/etcdbackup.sh
Menyalin file snapshot dari penampung etcd.
sudo cp /proc/ETCD_PID/root/tmp/snapshot.db ./etcd-backups
Salin semua file di direktori /secrets pada container etcd ke direktori cadangan Anda. File ini berisi sertifikat yang mengenkripsi dan memvalidasi komunikasi antara etcd dan proses lainnya di cluster. Bersama-sama, file snapshot dan file sertifikat merupakan cadangan penuh dari status cluster dll.
sudo cp -r /proc/ETCD_PID/root/secrets ./etcd-backups
Gunakan alat
tar
untuk memaketkan file cadangan dll. ke dalam file tar yang mudah digunakan.tar -cvf etcd-backup.tar etcd-backup
Keluar ke komputer lokal Anda dan gunakan alat
scp
untuk menyalin file etcd-backup.tar dari instance layanan pengelolaan. Contoh ini menggunakan variabel lingkungan BASTION_DNS dan MANAGEMENT_IP yang ditentukan sebelumnya.scp -i ~/.ssh/anthos-gke -J ubuntu@$BASTION_DNS \ ubuntu@$MANAGEMENT_IP:~/etcd-backup/backup.tar