Mencadangkan cluster pengguna di AWS

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:

  1. Buka shell pada instance layanan pengelolaan yang menjalankan etcd untuk cluster Anda.

    1. 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)
      
    2. 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
      
  2. Buat direktori untuk menyimpan data cadangan etcd.

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

  4. 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
    
  5. Gunakan perintah nsenter untuk menjalankan skrip dalam container etcd guna membuat snapshot.

    sudo nsenter --all --target ETCD_PID /tmp/etcdbackup.sh
    
  6. Menyalin file snapshot dari penampung etcd.

    sudo cp /proc/ETCD_PID/root/tmp/snapshot.db ./etcd-backups
    
  7. 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
    
  8. Gunakan alat tar untuk memaketkan file cadangan dll. ke dalam file tar yang mudah digunakan.

    tar -cvf etcd-backup.tar etcd-backup
    
  9. 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
    

Untuk Informasi Selengkapnya