Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 4 Current »


1. Velero 개요

Velero는 Kubernetes 리소스와 볼륨을 백업 및 복원하고, 재해 복구와 마이그레이션을 위한 오픈소스 도구입니다.

Velero 특징

  • On-demand 백업: 원하는 즉시 데이터를 백업

  • Scheduled 백업: 예약 작업을 통해 데이터를 반복적으로 백업

  • 복원: 이전에 생성한 백업에서 모든 리소스를 복원 가능

  • 백업 만료: 백업을 생성할때 플래그를 추가하여 TTL을 지정 가능

  • 오브젝트 스토리지 동기화: 백업 리소스가 존재하는지 지속적으로 확인이 가능

  • 마이그레이션: 동일한 오브젝트 스토리지를 사용할 경우 클러스터간 리소스를 마이그레이션을 할 수 있음

Velero 구조

백업 구조

  1. Velero Client는 Kubernetes API 서버를 호출하여 백업 개체를 생성합니다.

  2. BackupController는 새로운 백업 개체를 확인하고 유효성을 검사합니다.

  3. BackupController는 API 서버에 리소스를 쿼리하여 백업할 데이터를 수집합니다.

  4. BackupController는 오브젝트 스토리지 서비스를 호출하여 백업 파일을 업로드합니다.

 

복원 구조

  1. Velero Client는 Kubernetes API 서버를 호출하여 복원 개체를 생성합니다.

  2. RestoreController는 새로운 복원 개체를 확인하고 유효성을 검사합니다.

  3. RestoreController는 오브젝트 스토리지 서비스에서 백업 정보를 가져옵니다.

  4. 자체적으로 백업된 리소스를 실행하여 리소스가 새로운 클러스터에서 작동하는지 확인합니다.

  5. RestoreController는 복원 프로세스를 시작하여 각 리소스를 순차적으로 복원합니다.

2. Velero 사용

리소스 백업

  • 백업할 리소스를 kubectl 명령어를 통해 확인합니다.

(k8s-venv) root@k8s-master01:~# kubectl get all -n ingress-nginx
NAME                                 READY   STATUS    RESTARTS   AGE
pod/ingress-nginx-controller-79kc4   1/1     Running   0          7m54s
pod/ingress-nginx-controller-kmdp9   1/1     Running   0          7m54s
pod/ingress-nginx-controller-q5cmx   1/1     Running   0          7m54s
pod/ingress-nginx-controller-sl2qc   1/1     Running   0          7m54s
pod/ingress-nginx-controller-v2cfd   1/1     Running   0          7m54s

NAME                                         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)   AGE
service/ingress-nginx-controller-admission   ClusterIP   10.233.59.92   <none>        443/TCP   7m55s

NAME                                      DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR            AGE
daemonset.apps/ingress-nginx-controller   5         5         5       5            5           kubernetes.io/os=linux   7m55s
  • Velero Client를 통해 쿠버네티스 리소스를 백업합니다.

(k8s-venv) root@k8s-master01:~# velero backup create ingress-nginx-backup --include-namespaces ingress-nginx
Backup request "ingress-nginx-backup" submitted successfully.
Run `velero backup describe ingress-nginx-backup` or `velero backup logs ingress-nginx-backup` for more details.
  • 백업된 리소스 목록을 확인합니다.

(k8s-venv) root@k8s-master01:~# velero get backup
NAME                   STATUS      ERRORS   WARNINGS   CREATED                         EXPIRES   STORAGE LOCATION   SELECTOR
ingress-nginx-backup   Completed   0        0          2022-12-17 20:38:55 +0900 KST   29d       default            <none>

리소스 복원

  • 장애 상황을 가정하여 쿠버네티스 리소스를 삭제합니다.

(k8s-venv) root@k8s-master01:~# kubectl delete ns ingress-nginx
namespace "ingress-nginx" deleted

(k8s-venv) root@k8s-master01:~# kubectl get all -n ingress-nginx
No resources found in ingress-nginx namespace.
  • Velero Client를 통해 쿠버네티스 리소스를 복원합니다.

(k8s-venv) root@k8s-master01:~# velero restore create --from-backup ingress-nginx-backup
Restore request "ingress-nginx-backup-20221217204056" submitted successfully.
Run `velero restore describe ingress-nginx-backup-20221217204056` or `velero restore logs ingress-nginx-backup-20221217204056` for more details.
  • 정상적으로 쿠버네티스 리소스가 복원되었는지 확인합니다.

(k8s-venv) root@k8s-master01:~# kubectl get all -n ingress-nginx
NAME                                 READY   STATUS    RESTARTS   AGE
pod/ingress-nginx-controller-79kc4   1/1     Running   0          26s
pod/ingress-nginx-controller-kmdp9   1/1     Running   0          26s
pod/ingress-nginx-controller-q5cmx   1/1     Running   0          26s
pod/ingress-nginx-controller-sl2qc   1/1     Running   0          26s
pod/ingress-nginx-controller-v2cfd   1/1     Running   0          26s

NAME                                         TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)   AGE
service/ingress-nginx-controller-admission   ClusterIP   10.233.24.2   <none>        443/TCP   26s

NAME                                      DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR            AGE
daemonset.apps/ingress-nginx-controller   5         5         5       5            5           kubernetes.io/os=linux   26s

3. Velero 기술 자료

https://velero.io/docs/v1.10/

4. Velero 릴리즈 노트

https://github.com/vmware-tanzu/velero/releases

  • No labels