Table of Contents | ||||
---|---|---|---|---|
|
...
1. Velero 개요
...
Velero는 Kubernetes 리소스와 볼륨을 백업 및 복원하고, 재해 복구와 마이그레이션을 위한 오픈소스 도구입니다.
Velero 특징
On-demand 백업: 원하는 즉시 데이터를 백업
Scheduled 백업: 예약 작업을 통해 데이터를 반복적으로 백업
복원: 이전에 생성한 백업에서 모든 리소스를 복원 가능
백업 만료: 백업을 생성할때 플래그를 추가하여 TTL을 지정 가능
오브젝트 스토리지 동기화: 백업 리소스가 존재하는지 지속적으로 확인이 가능
마이그레이션: 동일한 오브젝트 스토리지를 사용할 경우 클러스터간 리소스를 마이그레이션을 할 수 있음
Velero 구조
...
백업 구조
Velero Client는 Kubernetes API 서버를 호출하여 백업 개체를 생성합니다.
BackupController는 새로운 백업 개체를 확인하고 유효성을 검사합니다.
BackupController는 API 서버에 리소스를 쿼리하여 백업할 데이터를 수집합니다.
BackupController는 오브젝트 스토리지 서비스를 호출하여 백업 파일을 업로드합니다.
...
Velero Client는 Kubernetes API 서버를 호출하여 복원 개체를 생성합니다.
RestoreController는 새로운 복원 개체를 확인하고 유효성을 검사합니다.
RestoreController는 오브젝트 스토리지 서비스에서 백업 정보를 가져옵니다.
자체적으로 백업된 리소스를 실행하여 리소스가 새로운 클러스터에서 작동하는지 확인합니다.
RestoreController는 복원 프로세스를 시작하여 각 리소스를 순차적으로 복원합니다.
2. Velero 사용
리소스 백업
백업할 리소스를 kubectl 명령어를 통해 확인합니다.
...
Code Block |
---|
(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> |
리소스 복원
장애 상황을 가정하여 쿠버네티스 리소스를 삭제합니다.
...
Code Block |
---|
(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 |