LabHub
배우기 러닝패스 코스

CKA — Kubernetes Administrator

Backing Up etcd and Planning the Restore

LabHub 에서 이어서 보기

한국어 원문으로 표시합니다.

목표

etcd 스냅샷을 실제로 뜨고 검증하고, 스냅샷이 담는 시점의 의미를 리소스 대조로 확인하고, 복구 절차를 문서로 남깁니다.

왜 중요한가

CKA 실기에서 etcd 백업은 거의 매번 나옵니다. 그런데 명령을 외우는 것만으로는 부족합니다. 이 실습이 강조하는 것은 스냅샷이 시점을 담는다는 사실입니다. 스냅샷을 뜬 뒤에 만든 리소스는 그 파일 안에 없고, 복구하면 사라집니다. 이 감각이 없으면 복구 후 "왜 어제 만든 게 없죠" 라는 사고가 납니다.

복구 계획을 글로 쓰게 하는 이유도 있습니다. 복구는 명령 한 줄이 아니라 순서입니다. 컨트롤 플레인을 내리고, 새 data-dir 에 풀고, 멤버 구성과 peer URL 을 맞추고, 다시 띄웁니다. 이 순서를 미리 써 두지 않으면 장애 한복판에서 만들게 되고, 그때 판단은 대체로 틀립니다.

이 환경의 etcd 는 127.0.0.1:2379 에서 돌고 있습니다. 실제 kubeadm 클러스터라면 여기에 --cacert, --cert, --key 세 옵션이 더 붙습니다.

단계

  1. /root/cka-etcd/env.sh 를 만들어 ETCDCTL_API=3ETCDCTL_ENDPOINTS=127.0.0.1:2379 를 자식 프로세스에 전달되도록 내보낸다.
  2. etcd 엔드포인트 상태(또는 헬스) 출력을 /root/cka-etcd/status.txt 에 저장한다. 파일에 엔드포인트 주소가 보여야 한다.
  3. 네임스페이스 cka-etcd 를 만들고 ConfigMap pre-backup 을 만든다. 데이터는 stage=before. 그 다음 cka-etcd 의 컨피그맵 목록을 /root/cka-etcd/before.txt 에 저장한다.
  4. etcd 스냅샷을 /root/cka-etcd/snap.db 에 저장한다.
  5. 그 스냅샷의 상태(메타데이터) 출력을 /root/cka-etcd/snap-status.txt 에 저장한다.
  6. 스냅샷을 뜬 뒤에 ConfigMap post-backup (데이터 stage=after)을 cka-etcd 에 만들고, 컨피그맵 목록을 /root/cka-etcd/after.txt 에 저장한다. before.txt 에는 post-backup 이 없고 after.txt 에는 둘 다 있어야 한다.
  7. /root/cka-etcd/restore-plan.md 에 복구 절차를 다섯 줄 이상, 200 바이트 이상으로 적는다. snapshot restore, --data-dir, --initial-cluster, peer 포트 2380, apiserver 라는 단어가 모두 들어가야 하고, 복구 중 컨트롤 플레인을 잠시 멈춘다는 내용도 있어야 한다.

참고

etcdctl 환경변수 정리하기

/root/cka-etcd/env.sh 를 만들어 ETCDCTL_API=3ETCDCTL_ENDPOINTS=127.0.0.1:2379 를 자식 프로세스에 전달되도록 내보낸다.

etcdctl 은 v2 와 v3 API 가 갈립니다. 환경변수는 자식 프로세스에 전달되어야 하므로 그냥 대입만 해서는 부족합니다.

엔드포인트 상태 확인하기

etcd 엔드포인트 상태(또는 헬스) 출력을 /root/cka-etcd/status.txt 에 저장한다. 파일에 엔드포인트 주소가 보여야 한다.

endpoint status 와 endpoint health 둘 다 씁니다. 출력이 표준에러로 나가는 경우가 있으니 리다이렉트에 주의하세요.

백업 기준점 만들기

네임스페이스 cka-etcd 를 만들고 ConfigMap pre-backup 을 만든다. 데이터는 stage=before. 그 다음 cka-etcd 의 컨피그맵 목록을 /root/cka-etcd/before.txt 에 저장한다.

스냅샷이 어느 시점을 담는지 나중에 대조하려면 지금 상태를 파일로 남겨야 합니다. 이 파일에는 아직 없는 것이 있어야 뒤 단계가 성립합니다.

스냅샷 저장하기

etcd 스냅샷을 /root/cka-etcd/snap.db 에 저장한다.

snapshot save 는 파일 경로를 인자로 받습니다. 디렉터리가 없으면 실패하니 먼저 만들어 두세요.

스냅샷 메타데이터 확인하기

그 스냅샷의 상태(메타데이터) 출력을 /root/cka-etcd/snap-status.txt 에 저장한다.

status 는 해시, 리비전, 키 개수, 크기를 보여 줍니다. 최신 etcd 는 이 하위 명령을 별도 도구로 옮겼으니 없다면 그쪽을 써 보세요.

백업 이후 리소스와 대조하기

스냅샷을 뜬 뒤에 ConfigMap post-backup (데이터 stage=after)을 cka-etcd 에 만들고, 컨피그맵 목록을 /root/cka-etcd/after.txt 에 저장한다. before.txt 에는 post-backup 이 없고 after.txt 에는 둘 다 있어야 한다.

스냅샷을 뜬 다음에 만든 리소스는 그 스냅샷 안에 없습니다. 그 사실을 두 파일의 차이로 증명하는 단계입니다.

종합: 복구 절차 문서로 남기기

/root/cka-etcd/restore-plan.md 에 복구 절차를 다섯 줄 이상, 200 바이트 이상으로 적는다. snapshot restore, --data-dir, --initial-cluster, peer 포트 2380, apiserver 라는 단어가 모두 들어가야 하고, 복구 중 컨트롤 플레인을 잠시 멈춘다는 내용도 있어야 한다.

복구는 명령 한 줄이 아니라 순서입니다. 무엇을 먼저 멈추고, 어디에 풀고, 어떤 값을 맞춰야 다시 뜨는지를 적으세요.