Kubernetes
ETCD 백업 & 복구
밝은숲
2021. 7. 20. 11:12
목표 : test-master001 노드의 ETCD 를 Backup&Restore 한다.
버전 : kubernetes 1.21.1
관련 경로
- /etc/kubernetes/manifest : K8S의 static pod의 yml 파일 위치
- /etc/ssl/etcd : etcd의 인증 파일 위치
- /var/lib/etcd : etcd 컨테이너와 노드의 마운트 경로
1. etcd backup
명령어
$ etcdctl --cacert="" --cert="" --key="" snapshot save 파일명
ex 1) 노드에서 백업 명령어 실행
$ etcdctl --cacert=/etc/ssl/etcd/ssl/ca.pem --cert=/etc/ssl/etcd/ssl/node-master001.pem --key=/etc/ssl/etcd/ssl/node-master001-key.pem snapshot save master001-etcd-backup
ex 2) docker 명령어로 etcd 컨테이너에서 명령어 전달
- /var/lib/etcd 가 마운트되어있기때문에 해당 경로에 백업하고 이동&관리
- 컨테이너에서 환경변수가 설정되어있기때문에 간편
$ docker exec -it -u root etcd3 etcdctl snapshot save /var/lib/etcd/master001-etcd-backup
$ cp /var/lib/etcd/master001-etcd-backup /var/lib/etcd_backup/
2. etcd restore
명령어
$ etcdctl --cacert="" /
--cert="" /
--key="" /
--data-dir="" /
--initial-advertise-peer-urls="" /
--initial-cluster="" /
--name="" /
snapshot /var/lib/etcd_backup/
$ etcdctl --cacert=/etc/ssl/etcd/ssl/ca.pem --cert=/etc/ssl/etcd/ssl/node-master001.pem --key=/etc/ssl/etcd/ssl/node-master001-key.pem --endpoints=127.0.0.1:2380 --data-dir=/var/lib/etcd/etcd.restore snapshot restore /var/lib/etcd_backup/snapshotdb.210720
*예전 버전에서는 /etc/kubernetes/manifest/etcd.yml에서 ETCD 경로가 etcd_backup으로 변경될 경우 컨테이너에서 경로 옵션 수정