Skip to content
nayoung edited this page Aug 3, 2023 · 3 revisions

ETCD 란 무엇일까?

k8s 가 사용하는 key:value 형태의 데이터를 저장하는 기반 스토리지(backing storage)로, 클러스터의 모든 데이터가 etcd 에 보관된다. 따라서 높은 신뢰성을 제공한다.

쿠버네티스의 마스터 노드에 존재하고, 하나의 pod 형태로 동작하므로 kube-system 네임스페이스에 etcd-k8s-master pod 가 동작하는 것을 확인할 수 있다.

key:value 형태로 저장되므로 별도의 파일로 백업(snapshot)이 가능하다. 이 형태의 파일이 DB 형태로 /var/lib/etcd/ 경로 아래에 저장된다.


ETCD Backup

/var/lib/etcd 를 snapshot 파일로 복제해서 보존하는 것을 말한다.

backup 을 생성하기 위해 다음의 정보가 필요하다.

  • etcd endpoint
  • server key
  • server certificate
  • cacert certificate

💡 etcdctl : etcd 관리 명령 cli 로 k8s master node 에 etcdctl을 설치하여 사용한다.

  1. sudo cat /etc/kubernetes/manifests/etcd.yaml image

다음 명령어를 통해 모든 정보를 얻을 수 있다.

  1. 명령어 실행
ETCDCTL_API=3 etcdctl  --endpoints=https://192.168.49.2:2379 \      
  --cacert=/var/lib/minikube/certs/etcd/ca.crt \
  --cert=/var/lib/minikube/certs/etcd/server.crt  \
  --key=/var/lib/minikube/certs/etcd/server.key \
  snapshot save /home/knoldus/Desktop/knoldus/test_space/etcd.db
  1. 확인하기
ETCDCTL_API=3 etcdctl --write-out=table snapshot status /opt/backup/etcd.db

Watch API란?

etcd의 watch api는 etcd의 변경 사항을 실시간으로 감지하기 위한 기능을 제공하는 api이다. watch api를 사용하면, etcd 클러스터의 key-value 저장소에서 변경 사항이 발생할 때마다 알림을 받을 수 있다.


watch api를 사용하면 클라이언트는 특정 디렉토리 혹은 키의 변경 사항을 감지할 수 있다. 이러한 변경 사항은 새로운 키가 추적되거나 기존 키의 값이 변경되거나 삭제될 때 발생한다. 감지된 변경 사항은 클라이언트에게 이벤트 형태로 전달되며, 클라이언트는 해당 이벤트를 처리할 수 있다.


watch api는 etcd 클러스터의 데이터 변경을 실시간으로 감지하고, 이를 활용하여 다양한 작업을 수행할 수 있다. 예로, 변경된 데이터에 대한 처리 로직을 실행하거나, 변경 사항을 기반으로 새로운 작업을 생성하거나 업데이트하는 등의 작업을 수행할 수 있다.




Reference

How to take a snapshot of etcd and restore it on the Kubernetes cluster.

Operating etcd clusters for Kubernetes

CKA 준비 (1) ETCD Backup & Restore