etcd 복구 ( 3 master on cluster )

김건호·2023년 2월 28일
2

개요

master 다중화가 되어 있는 kubernetes cluster의 etcd cluster save 및 restore 방법

사전요구사항

etcd pod에 직접 exec하여 실행할 수 있지만, kubectl cp가 불가능 한 경우 snapshot 파일을 사용할 수 없습니다.
따라서 etcdctl binary 파일이 필요합니다.

etcdctl 설치방법

ETCD_VER=v3.4.13
curl https://storage.googleapis.com/etcd/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz
tar xzvf etcd-${ETCD_VER}-linux-amd64.tar.gz
mv etcd-${ETCD_VER}-linux-amd64/etcdctl /usr/local/bin/etcdctl
etcdctl --version

etcdctl 설정

etcdctl은 etcd 인증서를 참조하여 etcd와 통신하여 명령어를 실행합니다.
실행할 때마다 작성하면 번거로우니 alias로 등록해줍시다.

$ alias etcdctl='ETCDCTL_API=3 etcdctl \
--endpoints=https://노드IP:2379 \
--cacert=/etc/kubernetes/pki/etcd/ca.crt \
--cert=/etc/kubernetes/pki/etcd/server.crt \
--key=/etc/kubernetes/pki/etcd/server.key'

백업 및 복구

snapshot 저장

$ etcdctl snapshot save /경로/파일명.db

snapshot 상태확인

$ etcdctl snapshot status /경로/파일명.db -w="table"
+----------+----------+------------+------------+
|   HASH   | REVISION | TOTAL KEYS | TOTAL SIZE |
+----------+----------+------------+------------+
| b01bf247 | 35127127 |      10759 |      53 MB |
+----------+----------+------------+------------+

snapshot 복구

마스터노드에서 각각 진행합니다.

$ etcdctl snapshot restore /경로/파일명.db \
--data-dir /var/lib/etcd \
--name [m1-name] \
--initial-cluster "[m1-name]=https://[m1_IP]:2380,[m2-name]=https://[m2_IP]:2380,[m3-name]=https://[m3_IP]:2380" \
--initial-advertise-peer-urls https://[master1_IP]:2380 \
--initial-cluster-token="etcd-cluster-1"  \
--skip-hash-check=true

$ etcdctl snapshot restore /경로/파일명.db \
--data-dir /var/lib/etcd \
--name [m2-name] \
--initial-cluster "[m1-name]=https://[m1_IP]:2380,[m2-name]=https://[m2_IP]:2380,[m3-name]=https://[m3_IP]:2380" \
--initial-advertise-peer-urls https://[master2_IP]:2380 \
--initial-cluster-token="etcd-cluster-1"  \
--skip-hash-check=true

$ etcdctl snapshot restore /경로/파일명.db \
--data-dir /var/lib/etcd \
--name [m3-name] \
--initial-cluster "[m1-name]=https://[m1_IP]:2380,[m2-name]=https://[m2_IP]:2380,[m3-name]=https://[m3_IP]:2380" \
--initial-advertise-peer-urls https://[master3_IP]:2380 \
--initial-cluster-token="etcd-cluster-1"  \
--skip-hash-check=true

참고문서

etcdctl 설치
https://etcd.io/docs/v3.4/op-guide/recovery/

profile
Ken, 🔽🔽 거노밥 유튜브(house icon) 🔽🔽

0개의 댓글