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으로 변경될 경우 컨테이너에서 경로 옵션 수정