[CKA] ETCD backup

Hi yena·2023년 2월 27일
0

CKA

목록 보기
2/4

DOCS: https://kubernetes.io/docs/tasks/administer-cluster/configure-upgrade-etcd/

CKA 시험에 빠지지 않고 나오는 문제는 ETCD 백업문제이다
etcd는 key:value 형태의 데이터 저장 스토리지 이고, 쿠버네티스 마스터 노드에서 동작한다.

보통 시험에선 end point ip 정보와 ca.crt, server.crt, server.key 정보를 미리 주고 백업경로를 지정해주며 백업 후 리스토어를 하라고 한다.

etcd 는 스태틱 파드로 동작하므로
/etc/kubernetes/manifasts 경로 아래 etcd.yaml 에 정의 되어있다.
(static pod 위치는 /var/lib/kubelet/config.yaml 에 있음, 보통 /etc/kubernetes/manifasts로 지정되어있는것으로 알고있다.)

전체 과정은 아래와 같다.

문제 시작 전 아래와 같은 문구가 시험에 있다. 주의할 것

no configuration context for this task. ensure, however, that you have returned to the base node before starting to work on this task

[student@mk8s-master-0]$ 
exit

이런 경우 아래 명령어를 통해 현재 context를 확인하고 ssh로 해당 노드에 들어간다

$kubectl config current-context
$ssh k8s-master
$sudo -i

문제에선 보통 crt, key, ca정보를 주는것 같지만 만약 주지 않는다면
/etc/kubernetes/manifasts/etcd.yaml 파일에서 확인하거나

ps -ef | grep kube | grep file

명령어로 확인 할 수 있다.

backup은 아래 명령어를 통해 확인.

ETCDCTL_API=3 etcdctl --endpoints="https://127.0.0.1:2379" \
--cacert=/.../ca.crt
--cert=/.../etcd-client.crt \
--key=/.../etcd-client.key \
snapshot save <백업경로>

ETCD Restore

  • 리스토어 해주기 전에 특정 파드를 생성해보거나, 지워봐서 진짜 복원이 되었는지 확인해주는것도 검증 방법이다.

이미 만들어진 파일을 etcd에 restore
이때 사용되는 directory는 기존 etcd 데이터 저장 경로는 사용하지 않는다(이미 사용중이니까)

 ETCDCTL_API=3 etcdctl\
--data-dir /.../etcd-previous(아래 db 파일 풀어줄 경로)\
snapshot restore /.../etcd-snapshot-previous.db(문제에서 주어진경로)
tree /.../etcd-previous

명령어로 snap 파일 찾아보기

이제 etcd 파드에 위 경로가 앞으로 etcd의 저장소다! 라고 알려줘야한다.
/etc/kubernetes/manifests 경로 아래 etcd.yaml파일을 열어서

hostPath 아래 path 경로 수정 해줄 것

etcd 파드는 static pod 이니까 yaml을 변경해주면 자동으로 restart 된다.

다 완료 했으면

$docker ps -a | grep etcd

로 리스타트 되는 중인 것을 확인 가능(exit -> up)

0개의 댓글