Velero 복구(Restore) 전략

Velero 복구(Restore) 전략

1️⃣ Velero Restore 개념 및 동작 방식

Velero의 복구(Restore)는 백업된 Kubernetes 리소스 및 Persistent Volume(PV) 데이터를 기존 클러스터 또는 새로운 클러스터로 되돌리는 과정입니다.

📌 Velero의 핵심 복구 개념

  • Restore : 백업된 데이터에서 리소스를 복구하는 단위
  • Backup : 복구할 데이터를 저장하는 백업
  • Restic : PV 데이터를 파일 단위로 복구하는 옵션
  • Volume Snapshot : 클라우드 제공업체의 볼륨 스냅샷을 사용한 복구

Velero 백업 리스트 조회

velero backup get
  • 현재 사용 가능한 백업 목록을 확인

Velero 복구 가능한 리소스 확인

velero restore get
  • 기존에 실행된 복구 목록을 확인

2️⃣ 전체 클러스터 복구 방법

클러스터 전체를 복구하려면 Velero의 restore 기능을 활용하면 됩니다.

1. 기본적인 전체 클러스터 복구

velero restore create full-cluster-restore --from-backup full-cluster-backup
  • full-cluster-backup 백업에서 전체 클러스터를 복구
  • 모든 네임스페이스 및 리소스가 포함됨

복구 진행 상태 확인

velero restore describe full-cluster-restore --details

복구된 리소스 목록 확인

kubectl get all --all-namespaces

⚠️ 주의:

  • 기존 리소스가 존재할 경우 충돌이 발생할 수 있음
  • 기존 리소스를 삭제한 후 복구를 수행하는 것이 안전함

3️⃣ 특정 네임스페이스 및 리소스 복구 방법

전체 클러스터가 아닌 특정 네임스페이스 또는 리소스만 복구할 수도 있습니다.

1. 특정 네임스페이스 복구

velero restore create my-namespace-restore --from-backup my-namespace-backup --include-namespaces=my-namespace
  • my-namespace 네임스페이스만 복구

복구된 네임스페이스 리소스 확인

kubectl get all -n my-namespace

2. 특정 리소스(Deployment, ConfigMap, Secret 등) 복구

velero restore create my-config-restore --from-backup my-config-backup --include-resources=configmaps,secrets
  • ConfigMapSecret만 복구

특정 리소스 복구 결과 확인

kubectl get configmaps,secrets -n my-namespace

복구 시 기존 리소스를 덮어쓰기 (이미 존재하는 리소스를 덮어씌우려면 --overwrite 옵션 추가)

velero restore create force-restore --from-backup my-backup --overwrite

4️⃣ Volume Snapshot을 활용한 복구

클라우드 환경에서는 볼륨 스냅샷을 사용하여 빠르게 Persistent Volume(PV)을 복구할 수 있습니다.

볼륨 스냅샷으로 복구하기

velero restore create pv-restore --from-backup pv-snapshot-backup --restore-volumes=true

복구된 Persistent Volume 확인

kubectl get pv

📌 볼륨 스냅샷을 활용한 복구 특징

  • 클라우드 스토리지(S3, GCP, Azure)에서 직접 복구 가능
  • 기존 PVC와 연결되며, 데이터 무결성을 유지

PVC를 복구한 후 Pod 재시작

kubectl delete pod -n my-namespace --all

5️⃣ Restic을 이용한 파일 단위 복구

온프레미스 환경 또는 개별 파일 단위 복구가 필요할 때 Restic을 활용할 수 있습니다.

1. Restic 백업된 볼륨 목록 확인

velero backup describe restic-backup --details

2. Restic을 사용하여 파일 단위로 복구

velero restore create restic-restore --from-backup restic-backup

Restic이 적용된 볼륨 목록 확인

kubectl get pod -n my-namespace -o jsonpath='{.spec.volumes[*].persistentVolumeClaim.claimName}'

Restic을 활용한 특정 PVC 복구 예제

apiVersion: velero.io/v1
kind: Restore
metadata:
  name: restore-with-restic
spec:
  backupName: restic-backup
  includedNamespaces:
    - my-app
  restorePVs: true

📌 Restic 복구 특징

  • 볼륨이 아닌 파일 단위로 복구 가능
  • 클라우드 환경뿐만 아니라 온프레미스 환경에서도 유용

6️⃣ 복구 시 발생하는 이슈 및 해결 방법

문제: 복구된 리소스가 기존 리소스와 충돌하는 경우
🔹 해결 방법:

  • 기존 리소스를 삭제하고 다시 복구
kubectl delete namespace my-namespace
velero restore create my-restore --from-backup my-backup
  • 또는 --overwrite 옵션을 사용하여 기존 리소스를 덮어쓰기
velero restore create my-restore --from-backup my-backup --overwrite

문제: PVC가 복구되지 않음
🔹 해결 방법:

  • 복구 시 --restore-volumes 옵션을 추가
velero restore create my-restore --from-backup my-backup --restore-volumes=true
  • 볼륨이 스냅샷으로 존재하는지 확인
velero backup describe my-backup --details

문제: 복구가 정상적으로 완료되지 않음
🔹 해결 방법:

  • 복구 로그 확인
velero restore describe my-restore --details
  • 문제 발생 시 kubectl describe 명령어로 Pod 상태 확인
kubectl describe pod -n my-namespace

7️⃣ 복구 로그 분석 및 트러블슈팅

Velero에서 복구 진행 상태를 분석하려면 restore describe 명령어를 사용하면 됩니다.

복구 진행 상태 확인

velero restore get

복구 상세 로그 분석

velero restore describe my-restore --details

복구 중 발생한 오류 확인

kubectl logs deployment/velero -n velero

복구 후 리소스 정합성 확인

kubectl get all -n my-namespace

PVC 연결 문제 확인

kubectl get pvc -n my-namespace

⚠️ 복구 후 네트워크 및 인그레스(ingress) 설정 확인 필요

kubectl get ingress -n my-namespace

RSS Feed
마지막 수정일자