본문 바로가기
kubenetes

external etcd backup & restore

by kyeongseo.oh 2022. 9. 18.

external etcd를 backup하고, restore한다.

 

작업순서

1. busybox pod을 생성

2. etcd backup

3. pod delete

4. restore

 

 

1. busybox pod을 생성한다.

yaml file 작성

apiVersion: v1
kind: Pod
metadata:
  name: busybox
  namespace: default
spec:
  containers:
  - image: busybox
    command:
      - sleep
      - "3600"
    imagePullPolicy: IfNotPresent
    name: busybox
  restartPolicy: Always

 

pod 생성

[root@km ~]# kubectl create -f busy.yaml
pod/busybox created

[root@km ~]# kubectl get pod
NAME      READY   STATUS    RESTARTS   AGE
busybox   1/1     Running   0          7s

 

2. etcd backup 진행

tmp 디렉토리에 etcd-backup.db 파일이 생성된다.

ETCDCTL_API=3 etcdctl snapshot save /tmp/etcd-backup.db --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key --endpoints=172.30.1.146:2379

 

3.pod delete

busybox pod을 삭제한다.

[root@km ~]# kubectl delete po busybox
pod "busybox" deleted

 

4. restore

4.1 snapshot을 사용해 /var/lib/etcd-backup 경로에 푼다.

[root@etcd etcd]# ETCDCTL_API=3 etcdctl snapshot restore /tmp/etcd-backup.db --data-dir /var/lib/etcd-backup
2022-09-17 23:40:29.939520 I | mvcc: restore compact to 18798
2022-09-17 23:40:29.946602 I | etcdserver/membership: added member 8e9e05c52164694d [http://localhost:2380] to cluster cdf818194e3a8c32

 

4.2 etcd 중지

etcd가 중지되면 k8s cluster에서 pod, svc 등의 정보를 조회할 수 없게 된다.

kubectl get pod 명령을 수행하면 hang 상태

systemctl stop etcd

 

4.3 기존 data-dir 삭제

rm -rf /var/lib/etcd/*

 

4.4 backup data-dir의 내용을 data-dir로 복사

cp /var/lib/etcd-backup/* /var/lib/etcd/

 

4.5 etcd 시작

systemctl start etcd

 

5. 복구 확인

확인해보니 삭제한 pod이 복구되었다.

[root@km pods]# kubectl get pod
NAME      READY   STATUS    RESTARTS   AGE
busybox   1/1     Running   0          3h59m

'kubenetes' 카테고리의 다른 글

k8s nifi-1.13.2 zookeeper-3.6.3  (1) 2022.10.02
kubeadm join 시 pending  (0) 2022.09.30
k8s external etcd 구성  (1) 2022.09.17
etcd backup, restore  (0) 2022.09.15
docker 이미지 수정하는 방법  (1) 2022.04.05

댓글