본문 바로가기

Infrastructure/Kubernetes

[CKA] Backup & Restore

Backup & Restore

  • 이번 장에서는 Certified Kubernetes Administrator (CKA) 을 준비하며 "백업과 복구"에 대해서 알아보도록 한다.

고려 사항

  • ETCD Cluster: 클러스터의 모든 관련 정보가 저장되는 핵심 구성 요소다.
  • Persistent Volumes: 애플리케이션이 영구 스토리지를 사용하는 경우 해당 스토리지도 백업해야 한다.

쿠버네티스 리소스 정의 파일

  • 명령형 방식: kubectl 명령어를 사용하여 리소스를 생성하는 방식이다. (예: 네임스페이스, 시크릿, ConfigMap, 서비스)

  • 선언형 방식: YAML 정의 파일을 사용하여 리소스를 생성하는 방식이다. (kubectl apply -f <file.yaml>)
  • 선언형 방식이 설정 관리에 더 효율적이며, 정의 파일을 소스 코드 저장소에 저장하여 관리하는 것이 좋다.
  • Kubernetes API 서버 쿼리: kubectl 또는 API 서버에 직접 접근하여 클러스터의 모든 리소스 설정을 백업하는 방식이다.

ETCD 백업 및 복구

  • etcd 데이터 디렉터리 백업: etcd 데이터가 저장되는 디렉터리를 백업 도구를 사용하여 백업한다.

  • 스냅샷 생성: etcdctl snapshot save snapshot.db 명령어를 사용하여 etcd 데이터베이스의 스냅샷을 생성한다.
  • 스냅샷 상태 확인: etcdctl snapshot status snapshot.db 명령어를 사용하여 스냅샷 상태를 확인한다.

  • 스냅샷 복구:
    • kube-apiserver 서비스 중단: systemctl stop kube-apiserver
    • 스냅샷 복구 명령어 실행: etcdctl snapshot restore snapshot.db --data-dir=/var/lib/etcd-from-backup (새로운 데이터 디렉터리 지정)
    • etcd 구성 파일 수정: /etc/etcd/etcd.conf 파일에서 데이터 데릭터리 경로를 새 경로로 변경한다.
    • etcd 서비스 재시작: systemctl daemon-reloadsystemctl restart etcd
    • kube-apiserver 서비스 시작: systemctl start kube-apiserver

Kubernetes API 서버 쿼리를 통한 백업

  • kubectl get all --all-namespaces -o yaml > all-resources.yaml 명령어를 사용하여 모든 네임스페이스의 파드, 배포, 서비스 등 모든 리소스를 YAML 형식으로 백업한다.
  • 모든 리소스 그룹을 고려하여 백업 스크립트를 작성해야 한다.
  • Velero (이전 Ark)와 같은 도구를 사용하여 쿠버네티스 API를 통해 클러스터 백업을 자동화할 수 있다.
  • Veloro는 쿠버네티스 API를 사용하여 클러스터 백업 및 복구를 지원하는 도구다.
  • 클러스터 리소스 및 영구 볼륨을 백업할 수 있다.
  • 클라우드 스토리지 (S3, Azure Blob Storage 등)에 백업 데이터를 저장할 수 있다.

ETCD 백업 vs Kubernetes API 서버 백업

  • ETCD 백업:
    • 장점: 클러스터의 전체 상태를 복원할 수 있다.
    • 단점: 관리형 쿠버네티스 환경에서는 접근이 제한될 수 있다.
  • 쿠버네티스 API 서버 백업:
    • 장점: 관리형 쿠버네티스 환경에서도 사용 가능하다.
    • 단점: 영구 스토리지 및 클러스터 외부 구성 요소는 별도로 백업해야 햔다.

참고한 강의

'Infrastructure > Kubernetes' 카테고리의 다른 글

[CKA] Security (Certificates)  (0) 2025.03.05
[CKA] Security (Authorization & TLS)  (0) 2025.03.05
[CKA] Upgrade  (0) 2025.02.28
[CKA] Scaling  (0) 2025.02.27
[CKA] Secret  (0) 2025.02.27