# 1.로그인
ssh k8s-master
# etcd, etcdtool(or etctutl) 버전 확인
etcd --version
etcdctl version
etcdutl version
# 편의를 위해
sudo -i
# 2.백업
# depracated
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
# etcdutl
etcdutl --data-dir /data snapshot restore etcd-snapshot.db
# 3.복원
# depracated
ETCDCTL_API=3 etcdctl --data-dir=/var/lib/etcd-previous \
snapshot restore /data/etcd-snapshot-previous.db
# etcdutl
etcdutl --data-dir /data snapshot restore etcd-snapshot.db
# 확인
tree /var/lib/etcd-previous
# etcd manifest
vi /etc/kubernetes/manifests/etcd.yaml
---
...
# volumes의 hostPath
volumes:
- hostPath:
path: /var/lib/etcd-previous # ← 변경
type: DirectoryOrCreate
name: etcd-data
---
# 검증
# 내 환경에서는 dockershim이 제거되어 containerd로 확인해야하는 상황
# etcd Pod가 다시 올라왔는지 확인
crictl ps | grep etcd
# 또는 kubectl로 확인 (API Server가 올라온 뒤)
kubectl get pods -n kube-system -l component=etcd