개요
쿠버네티스에서 etcd는 클러스터의 모든 상태(노드, 포드, 서비스 등)와 설정 정보를 저장하는 키-값 저장소입니다. 핵심 데이터 저장소로 사용되기 때문에, 신뢰성과 안정성을 좌우하는 매우 중요한 컴포넌트입니다.
만약 etcd가 유실된다면 컨테이너 뿐만 아니라 쿠버네티스 클러스터가 사용하는 모든 리소스가 영향을 받습니다.
RSM
etcd는 RSM(Replicated State Machine)기반으로 동작합니다. RSM은 etcd와 같은 분산 시스템에서 동일한 데이터를 다수의 서버에 복제하여 장애시에도 일관성있는 서비스를 제공하는 아키텍처입니다.
Backup & Restore
장애 및 데이터 손실에 대비해 정기적인 백업을 설정하는 것은 중요합니다.
etcdctl 명령어를 사용하여 스냅샷 방식으로 etcd 전체 데이터를 백업할 수 있습니다. 인증서와 endpoint 설정이 필요하며, API 버전 3을 사용해야 합니다. 아래 명령어는 etcd-snapshot.db 파일로 백업을 생성하는 예시입니다.
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 /path/to/backup/etcd-snapshot.db
복원은 백업된 스냅샷 파일을 etcd 데이터 디렉토리에 적용하는 과정입니다. 복원 시 기존 데이터 디렉토리와의 충돌을 피하기 위해 새로운 디렉토리를 사용합니다. (--data-dir는 복원된 데이터를 저장하는 디렉토리)
ETCDCTL_API=3 etcdctl snapshot restore /path/to/backup/etcd-snapshot.db \
--data-dir /var/lib/etcd-from-backup
데이터 일치를 위해 복원 작업 전 반드시 모든 쿠버네티스 API 서버를 중지합니다. 복원 후에는 etcd 프로세스를 중지하고, 기존 데이터 디렉토리를 삭제 또는 백업합니다. 그 후, 복원된 디렉토리로 etcd 설정을 변경합니다. 마지막으로 etcd를 재시작합니다.
'K8s' 카테고리의 다른 글
Helm (0) | 2025.05.04 |
---|---|
인그레스 (0) | 2025.04.26 |
K8s 소개 (2) | 2025.04.20 |
kube-proxy (0) | 2025.04.20 |
서비스 (Service) (0) | 2025.04.20 |