# 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