- Velero: Kubernetes 리소스 + PV 데이터를 백업/복구하는 오픈소스 도구
- etcd: Kubernetes 컨트롤 플레인의 etcd 키-값 저장소를 직접 스냅샷 백업
복구 목적
운영환경에서 둘다 백업하는것이 BEST
Velero: 특정 네임스페이스, 앱 복구 가능하며, 실수로 리소스를 삭제하거나 했을 때 복구
etcd: 전체 클러스터 장애 복구
| 구분 | etcd 백업 (etcdctl snapshot) | Velero 백업 |
| 백업 대상 | 클러스터의 모든 상태 데이터 (DB 스냅샷) | k8s API 오브젝트 (YAML) + Persistent Volume (PV) |
| 작동 방식 | etcd DB 자체를 파일로 덤프 | k8s API를 통해 리소스를 쿼리하여 S3 등에 저장 |
| 복구 범위 | 클러스터 전체 복구만 가능 | 특정 네임스페이스, 레이블, 리소스 단위 선택적 복구 |
| PV 백업 | 불가능 (Config만 저장됨) | 가능 (Snapshot 또는 Restic/Kopia 활용) |
| 난이도/환경 | 마스터 노드 접근 권한 필요 (관리형은 불가) | 클러스터 내 Pod로 설치, 관리형(EKS, GKE) 지원 |
| 주요 용도 | 컨트롤 플레인 장애 대응, 업그레이드 전 백업 | 재해 복구(DR), 클러스터 마이그레이션, 실수로 삭제한 리소스 복구 |
백업 방법
Velero는 POD로 설치해서 백업
1. Velero 클라이언트 설치
2. Velero 서버 설치
3. Velero POD 확인
4. Velero 백업 및 복구
etcd는 etcdctl 명령어로 shell 파일을 만들어서 crontab으로 백업
shell 파일 예시
# 1. 설정 변수
BACKUP_DIR="/data/etcd-backups"
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="$BACKUP_DIR/etcd-snapshot-$DATE.db"
LOG_FILE="$BACKUP_DIR/backup.log"
# 2. 백업 디렉토리 생성
mkdir -p $BACKUP_DIR
# 3. etcd 백업 실행
export 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 $BACKUP_FILE >> $LOG_FILE 2>&1
# 4. 결과 확인 및 로그 남기기
if [ $? -eq 0 ]; then
echo "[$DATE] 백업 성공: $BACKUP_FILE" >> $LOG_FILE
else
echo "[$DATE] 백업 실패!" >> $LOG_FILE
exit 1
fi
# 5. 오래된 백업 삭제 (7일 경과된 파일)
find $BACKUP_DIR -name "*.db" -mtime +7 -exec rm -f {} \;
echo "[$DATE] 7일 지난 백업 정리 완료" >> $LOG_FILE