이 페이지에서는 클러스터의 etcd 데이터를 손상시킬 수 있는 이벤트에서 복구하기 위해 GKE on AWS 설치용 etcd 데이터 스토어를 백업하는 방법을 보여줍니다.
제한사항
백업 파일을 사용한 etcd 데이터 복원은 최후의 수단으로 사용하는 것이 좋습니다. 클러스터가 완전히 손상되지 않는 한 백업 파일에서 복원하지 않는 것이 좋습니다. 최상의 조치를 결정하는 데 도움이 필요하면 Google 지원팀에 문의하세요.
이 절차에서는 PersistentVolume을 포함하여 워크로드의 데이터를 백업하지 않습니다.
이 백업은 다른 버전의 GKE on AWS를 복원하는 데 사용할 수 없습니다.
사용자 클러스터 백업
사용자 클러스터 백업은 사용자 클러스터 etcd 저장소의 스냅샷입니다. etcd 저장소에는 클러스터의 상태를 나타내는 모든 Kubernetes 객체와 커스텀 객체가 포함됩니다. 스냅샷에는 클러스터의 스테이트리스(Stateless) 워크로드를 다시 만드는 데 필요한 데이터가 포함되어 있습니다.
etcd 데이터 저장소의 스냅샷을 만들려면 다음 단계를 따르세요.
클러스터의 etcd를 실행하는 관리 서비스 인스턴스에서 셸을 엽니다.
클러스터 관리 서비스 인스턴스의 IP 주소를 찾습니다.
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)
ssh
도구를 사용하여 관리 서비스 인스턴스에 대한 연결을 엽니다.직접 연결
ssh -i ~/.ssh/anthos-gke ubuntu@$MANAGEMENT_IP
배스천 호스트
export BASTION_DNS=$(terraform output bastion_dns_name) ssh -i ~/.ssh/anthos-gke -J ubuntu@$BASTION_DNS ubuntu@$MANAGEMENT_IP
etcd 백업 데이터를 저장할 디렉터리를 만듭니다.
mkdir ./etcd-backups
ps
명령줄 도구를 사용하여 해당 인스턴스의 etcd 프로세스 ID를 찾습니다.ps -e | grep etcd
출력에는 etcd 프로세스의 세부정보가 표시됩니다. 첫 번째 요소는 etcd의 프로세스 ID입니다. 다음 단계에서 ETCD_PID를 이 프로세스 ID로 바꿉니다.
etcd 컨테이너의 파일 시스템 내에 스크립트를 작성해 스냅샷을 만듭니다. 이 스크립트는 etcdctl을 실행하여 etcd 데몬에 연결하고 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
nsenter
명령어를 사용하여 etcd 컨테이너 내에서 스크립트를 실행하여 스냅샷을 만듭니다.sudo nsenter --all --target ETCD_PID /tmp/etcdbackup.sh
etcd 컨테이너에서 스냅샷 파일을 복사합니다.
sudo cp /proc/ETCD_PID/root/tmp/snapshot.db ./etcd-backups
etcd 컨테이너의 /secrets 디렉터리에 있는 모든 파일을 백업 디렉터리에 복사합니다. 이 파일에는 etcd와 클러스터의 다른 프로세스 간의 커뮤니케이션을 암호화하고 검증하는 인증서가 포함됩니다. 스냅샷 파일과 인증서 파일은 모두 etcd 클러스터 상태의 전체 백업입니다.
sudo cp -r /proc/ETCD_PID/root/secrets ./etcd-backups
tar
도구를 사용하여 etc-backup 파일을 편리한 tar 파일로 묶습니다.tar -cvf etcd-backup.tar etcd-backup
로컬 머신으로 종료하고
scp
도구를 사용하여 관리 서비스 인스턴스에서 etcd-backup.tar 파일을 복사합니다. 이 예시에서는 앞에서 정의한 BASTION_DNS 및 MANAGEMENT_IP 환경 변수를 사용합니다.scp -i ~/.ssh/anthos-gke -J ubuntu@$BASTION_DNS \ ubuntu@$MANAGEMENT_IP:~/etcd-backup/backup.tar