# Accordion etcd restore script [![Typing SVG](https://readme-typing-svg.demolab.com?font=Dongle&size=25&pause=1000&color=8661F7&vCenter=true&width=435&height=25&lines=ETCD+%EB%B3%B5%EA%B5%AC+%EB%82%98%EB%8F%84+%ED%95%A0+%EC%88%98+%EC%9E%88%EB%8B%A4!!)](https://git.io/typing-svg) ### 지원 환경 ![Static Badge](https://img.shields.io/badge/Accordion_v2.11.0-8A2BE2?logo=kubernetes&logoColor=ffffff) > accrodion v2.11.0 환경 또는 각 master node에 etcdctl을 설치한 환경 ### 구조 ``` . ├── etcd-restore.sh ├── etcd-restore.yml └── roles └── etcd-restore ├── files ├── tasks │ ├── main.yml │ └── redhat │ ├── 0-etcdctl-check.yml │ ├── 1-etcd-backup-file-copy.yml │ ├── 2-etcd-restore.yml │ ├── 3-etcd-restart.yml │ ├── 4-kubelet-restart.yml │ ├── 5-kube-apiserver-restart.yml │ ├── 6-kube-scheduler-restart.yml │ ├── 7-kube-controller-manager-restart.yml │ ├── 8-delete-all-pods.yml │ ├── 9-calico-restart.yml # 사용하지 않는 task │ └── main.yml ├── templates └── vars └── main.yml ``` ### 작업 순서 ``` 1. etcdctl 설치 여부 확인 2. etcd 백업 파일 각 서버로 복사 # /tmp 경로에 복사 # 3. 기존 etcd 백업 디렉토리 생성 # /tmp/etcd-backup-202507080403 형식으로 생성 # 4. 기존 etcd 파일 및 디렉토리 백업 5. 기존 etcd 파일 및 디렉토리 제거 # 존재할 경우 제거 # 6. etcd 복구 디렉토리 생성 # /var/lib/etcd/recover 생성 # 7. etcd 복구 # master_mode 설정에 따라 다중화 / 싱글 적용 # 8. recover -> member 디렉토리 변경 9. etcd 재기동 # 모든 etcd container의 상태가 running으로 될 경우 다음 단계 진행 # 10. kubelet 재기동 11. kube-apiserver, kube-scheduler, kube-controller-manager container 재기동 # 각각 기동이 되면 다음 단계 진행 # 12. 1분 대기 12. 모든 Pod 재기동 ``` ### 사용 방법 ``` 1. etcd 백업 파일을 accordion-installer 디렉토리로 복사 2. vi group_vars/host.yml # host cluster 기준, member cluster는 vi group_vars/member.yml # # 아래와 같이 수정 # backup_dir: "/mantech/accordion-installer" # accordion-ansible container 내 경로 # etcd_filename: "shinhan-cluster-etcd-snapshot-2025-07-08.db" # 백업 파일 이름 # 3. ./etcd-restore.sh host 또는 ./etcd-restore.sh member ```