CKA 30제 01: ETCD Backup & Restore

주영·2023년 9월 13일
0

CKA 30제

목록 보기
1/7
post-thumbnail

본 게시물은 [따배씨] 01. ETCD Backup&Restore 영상을 참고하여 작성한 글입니다.

문제

ETCD Backup & Restore

  • 작업 시스템 : k8s-master
    First, create a snapshot of the existing etcd instance running at https://127.0.0.1:2379, saving the snapshot to /data/etcd-snapshot.db .
    Next, restore an existing, previous snapshot located at /data/etcd-snapshot-previous.db .
    The following TLS certificates/key are supplied for connecting to the server with etcdctl:
    CA certificate: /etc/kubernetes/pki/etcd/ca.crt
    Client certificate: /etc/kubernetes/pki/etcd/server.crt
    Client key: /etc/kubernetes/pki/etcd/server.key

이론

  • ETCD
    • Kubernetes의 모든 운영 정보를 가지고 있는 데이터 저장소
    • Kubernetes 마스터 노드에 존재하며, Pod 형태로 동작
    • ETCD Pod가 Kubernetes의 모든 운영 정보를 받아서 데이터 저장소에 담아줌
    • DB 형태로 /var/lib/etcd에 저장
    • Key-Value 형태로 저장 → 별도의 파일로 백업(스냅샷) 가능
  • ETCD Backup
    • 저장소 공간을 별도의 파일로 저장(백업)
    • = etcd snapshot. 현재 etcd 상태를 사진찍어서 파일로 남긴다.
  • ETCD Restore
    1. .db 파일을 다시 DB 공간에 옮겨주어야 함
    2. /var/lib/etcd-xxx 같은 공간에 restore 풀어주고 data-dir를 바꿔주어야함
    3. restart 되었는지 확인

검색 키워드 : etcd backup -> Operating etcd clusters for Kubernetes | Kubernetes

풀이

1. 컨텍스트 확인 및 etcd 버전 확인

$ kubectl config current-context
k8s

$ ssh k8s-master

$ whoami
user

// user 계정으로는 etcd backup, restore할 수 없으므로 root 계정으로 전환 혹은 sudo 명령어 붙이기
$ sudo -i

// 동작중인 etcd 버전과 etcdctl 툴 설치여부 확인
$ etcd --version
etcdctl version: 3.5.2
API version: 3.5

$ etcdctl version

2. ETCD Backup

// 위 링크에서 명령어 복사
ETCDCTL_API=3 etcdctl \
  --endpoints=https://127.0.0.1:2379 \
  --cacert=<trusted-ca-file> \
  --cert=<cert-file> \
  --key=<key-file> \
  snapshot save <backup-file-location>

// 아래와 같이 수정하여 실행
$ sudo 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

// 결과
...
Snapshot saved at /data/etcd-snapshot.db

// 확인
$ sudo ls -l /data/etcd-snapshot.db

3. ETCD Restore

// 위 링크에서 명령어 복사
ETCDCTL_API=3 etcdctl snapshot restore --data-dir <data-dir-location> snapshotdb

// 아래와 같이 수정하여 실행
sudo ETCDCTL_API=3 etcdctl \
  --data-dir=/var/lib/etcd-new \
  snapshot restore /data/etcd-snapshot-previous.db

// db 파일 풀린 것 확인
sudo tree /var/lib/etcd-new/

// hostPath 수정
sudo vi /etc/kubernetes/manifests/etcd.yaml
...
	- hostPath:
			path: /var/lib/etcd-new
			type: DirectoryOrCreate
		name: etcd-data

// Up 상태 확인
sudo docker ps -a | grep etcd

0개의 댓글