Kubernetes - ETCD backup & restore

brillog·2023년 8월 13일
0

Kubernetes

목록 보기
5/11

ETCD에 대해 알아보고 ETCD를 백업 및 복구하는 방법에 대해 알아보겠습니다.

ETCD란?

ETCD는 쿠버네티스의 기본 데이터 저장소이며 key-value 형태로 모든 쿠버네티스 클러스터 상태를 저장하고 복제합니다. 쿠버네티스 클러스터를 구성하는 필수 요소이므로 ETCD에 문제가 발생하여 클러스터 내 모든 정보가 사라져도 백업본이 있다면 restore 하여 복구가 가능합니다.

ETCD 버전 확인

$ kubectl -n kube-system logs etcd-controlplane | grep -i 'etcd-version'

또는

$ kubectl -n kube-system describe pod etcd-controlplane | grep -i 'image'

ETCD endpoint 확인

$ kubectl -n kube-system describe pod etcd-controlplane | grep '\--listen-client-urls'

ETCD certificate 경로 확인

$ kubectl -n kube-system describe pod etcd-controlplane | grep -e '.crt' -e '.key'

ETCD backup하기

$ ETCDCTL_API=3 etcdctl --endpoints=<etcd-endpoint-address> \
    --cacert=<trusted-ca-file> \
    --cert=<cert-file> \
    --key=<key-file> \
    snapshot save <backup-file-location>

ETCD restore하기

$ ETCDCTL_API=3 etcdctl snapshot restore --data-dir <data-dir-location> snapshotdb

그런 다음, /etc/kubernetes/manifests/etcd.yaml 파일의 spec.containers.volumeMounts.mountPath(name=etcd-data) 값을 snapshot 생성한 경로로 변경합니다.

$ vi /etc/kubernetes/manifests/etcd.yaml

# 수정
  volumes:
  - hostPath:
      path: /etc/kubernetes/pki/etcd
      type: DirectoryOrCreate
    name: etcd-certs
  - hostPath:
      path: /var/lib/etcd  # -> /var/lib/etcd-from-backup로 변경
      type: DirectoryOrCreate
    name: etcd-data

수행 결과, 모든 리소스가 backup 했을 때의 상태로 돌아온 것을 확인할 수 있습니다.


Reference

개인적으로 공부하며 작성한 글로, 내용에 오류가 있을 수 있습니다.

profile
Cloud & DevOps ♡

0개의 댓글