Section 6-2. Backup and Restore Methods
udemy의 Certified Kubernetes Administrator (CKA) with Practice Tests 강의 및 쿠버네티스 인 액션 (마르코 룩샤)를 참고하여 정리한 글입니다.
Section06. Cluster Maintenance
Backup and Restore Methods
Backup ETCD Cluster
- ETCD cluster는 클러스터 상태 (클러스터 자체에 대한 정보와 노드 및 클러스터 내부에서 생성된 모든 리소스 등)에 관한 정보를 저장하고 있다.
- ETCD Cluster는 마스터 노드에 호스트 되어있는데 ETCD를 구성할 때 모든 데이터가 저장될 위치인 –date-dir가 지정되어 있다.
1 2 3 4
ExecStart=/usr/local/bin/etcd \\ --name ${ETCD_NAME} \\ ... 생략 --data-dir=/var/lib/etcd
- ETCD는 또한 스냅샷 솔루션이 내장되어 있어
/var/lib/etcd
를 스냅샷 파일로 복제해서 보존할 수 있다.1
etcdctl snapshot save <스냅샷 파일 경로>
1 2 3 4 5 6 7 8 9 10 11 12
$ etcdtl snpashot save snapshot.db $ ls snapshot.db # 스냅샷 상태 확인 $ snapshot status snapshot.db +----------+----------+------------+------------+ | HASH | REVISION | TOTAL KEYS | TOTAL SIZE | +----------+----------+------------+------------+ | e63bfc5 | 473353 | 875 | 4.1 MB | +----------+----------+------------+------------+
Backup 과정
- ETCD를 호스팅 할 마스터 노드에 SSH 접속한다.
1
$ ssh k8s-master
- etcdctl이 설치되어 있는지 확인한다
1 2 3
$ etcdctl version etcdctl version: 3.5.2 API version: 3.5
- /var/lib/etcd에 대해 스냅샷 파일(//snapshot.db)을 생성한다.
1 2 3
$ ETCDCTL_API=3 etcdctl snapshot save snapshot.db $ ls snapshot.db
- kube-apiserver를 중단한다. (api server가 etcd를 사용하기 때문이다.)
1
$ service kube-apiserver stop
- 생선한 스냅샷 파일을 통해 복구한다. (새로운 데이터 디렉터리(/var/lib/etcd-from-backup)로 설정)
1 2 3 4
$ ETCDCTL_API=3 etcdctl \ snapshot restore snapshot.db \ --data-dir /var/lib/etcd-from-backup
- 이후 etcd 서비스 데몬 리로드와 etcd를 재시작한다
1 2
$ systemctl daemon-reload $ service etcd restart
- 마지막으로 kube api server를 시작한다.
1
$ service kube-apiserver start
참고 ETCDTL 명령어를 사용할 시 endpoint, cacert, cert, key 를 지정해야한다.
1 2 3 4 5 6 $ ETCDCTL_API=3 etcdctl \ snapshot save snapshot.db \ --endpoints=https://127.0.0.1:2379 \ --cacert=/etc/etcd/ca.crt \ --cert=/etc/etcd/etcd-server.crt \ --key=/etc/etcd/etcd-server.key
This post is licensed under CC BY 4.0 by the author.