본 게시물은 [따배씨] 01. ETCD Backup&Restore 영상을 참고하여 작성한 글입니다.
ETCD Backup & Restore
- 작업 시스템 : k8s-master
First, create a snapshot of the existing etcd instance running at https://127.0.0.1:2379, saving the snapshot to /data/etcd-snapshot.db .
Next, restore an existing, previous snapshot located at /data/etcd-snapshot-previous.db .
The following TLS certificates/key are supplied for connecting to the server with etcdctl:
CA certificate: /etc/kubernetes/pki/etcd/ca.crt
Client certificate: /etc/kubernetes/pki/etcd/server.crt
Client key: /etc/kubernetes/pki/etcd/server.key
검색 키워드 : etcd backup -> Operating etcd clusters for Kubernetes | Kubernetes
$ kubectl config current-context
k8s
$ ssh k8s-master
$ whoami
user
// user 계정으로는 etcd backup, restore할 수 없으므로 root 계정으로 전환 혹은 sudo 명령어 붙이기
$ sudo -i
// 동작중인 etcd 버전과 etcdctl 툴 설치여부 확인
$ etcd --version
etcdctl version: 3.5.2
API version: 3.5
$ etcdctl version
// 위 링크에서 명령어 복사
ETCDCTL_API=3 etcdctl \
--endpoints=https://127.0.0.1:2379 \
--cacert=<trusted-ca-file> \
--cert=<cert-file> \
--key=<key-file> \
snapshot save <backup-file-location>
// 아래와 같이 수정하여 실행
$ sudo ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 \
--cacert=/etc/kubernetes/pki/etcd/ca.crt \
--cert=/etc/kubernetes/pki/etcd/server.crt \
--key=/etc/kubernetes/pki/etcd/server.key \
snapshot save /data/etcd-snapshot.db
// 결과
...
Snapshot saved at /data/etcd-snapshot.db
// 확인
$ sudo ls -l /data/etcd-snapshot.db
// 위 링크에서 명령어 복사
ETCDCTL_API=3 etcdctl snapshot restore --data-dir <data-dir-location> snapshotdb
// 아래와 같이 수정하여 실행
sudo ETCDCTL_API=3 etcdctl \
--data-dir=/var/lib/etcd-new \
snapshot restore /data/etcd-snapshot-previous.db
// db 파일 풀린 것 확인
sudo tree /var/lib/etcd-new/
// hostPath 수정
sudo vi /etc/kubernetes/manifests/etcd.yaml
...
- hostPath:
path: /var/lib/etcd-new
type: DirectoryOrCreate
name: etcd-data
// Up 상태 확인
sudo docker ps -a | grep etcd