IT/Container&k8s

MINIO & VELERO install on K8S(Standalone Deployments)

Hayley Shim 2023. 10. 28. 17:04

k8s 환경 내 MinIO & Velero 구축

- Kubernetes 환경에서 backup 후 복원하는 방법 구축

- Velero를 통해 백업 및 복원 기능을 제공할 수 있고 Velero에서 연동 가능한 스토리지로 MinIO가 있다.


왜 Kubernetes 환경에서 Backup이 중요할까

Kubernetes 클러스터의 downtime이 발생하면 필요한 모든 에플리케이션으로 전체 클러스터를 설정하는 것은 쉬운 일이 아니며

클러스터를 다시 설정하고 작업 준비를 하는데 상당한 시간이 소요된다.

따라서 조직의 비지니스에 영향을 주지 않고 클러스터의 disaster scenario에 신속하게 대비하기 위해 backup이 중요하다.

1. 사전 작업

개발 환경(Env : Debian 10 Server image, k8s 설치)

- OS : Debian 10 Server image : 상대적으로 서버의 안정성이 높고 의존성 있는 패키지들을 자동으로 알려주어 패키지의 업데이트가 용이한 데비안 리눅스 환경에 구축

- 클러스터 만들기 (master / worker 노드)

1) docker install on debian 10 : https://docs.docker.com/engine/install/debian/#install-using-the-repository

- Set up the repository

- Add Docker’s official GPG key

- Install Docker Engine

2) k8s install : https://www.hostafrica.co.za/blog/new-technologies/install-kubernetes-cluster-debian-9/

- Swap disabled

- Letting iptables see bridged traffic

- Disable firewall

- Installing kubeadm, kubelet and kubectl

- Initializing your control-plane node(only master node)

- Installing a Pod network add-on(only master node)

- Setting worker node

kubectl get node



2. minIO

- minIO는 GNU Affero General Public License v3.0에 따라 출시된 고성능 오브젝트 스토리지

- Amazon S3 클라우드 스토리지 서비스와 호환되는 API

- minIO는 standalone(single), distributed 모드로 구성할 수 있다.

참고: Standalone Deployments - Minio Docs


Standalone Deployments

단일 스토리지 볼륨 또는 폴더가 있는 단일 MinIO 서버.

Standalone Deployments는 오브젝트 스토리지에 MinIO를 사용 하거나 단일 스토리지 볼륨에 S3 액세스 계층을 제공하는 애플리케이션의 평가 및 초기 개발에 가장 적합하다.

Standalone Deployments는 MinIO의 고급 S3 기능의 전체 집합에 대한 액세스를 제공하지 않는다.

1) minIO 설치 : https://docs.min.io/docs/minio-quickstart-guide.html

wget https://dl.min.io/server/minio/release/linux-arm64/minio
chmod +x minIO
./minio server /data 

minIO 콘솔 접속 후, 버킷 생성 - nginx-deployment




3. Velero https://velero.io/docs/v1.7/

- Velero는 Kubernetes 클러스터 리소스 및 영구 볼륨을 백업 및 복원하는 도구 제공

- cloud provider 또는 on-premises에서 velero를 실행할 수 있다

1) Velero를 설치한다 : github 링크 에서 velero 설정의 최신 릴리스를 다운로드

curl -L https://github.com/vmware-tanzu/velero/releases/download/v1.7.0/velero-v1.7.0-linux-arm64.tar.gz | tar xvfz - 
mv velero-v1.7.0-linux-arm64/velero /usr/local/bin  



velero version 

2) 아래 명령을 사용하여 velero install 명령을 실행 중인 마스터 컴퓨터의 일부 위치에 minio 자격 증명을 만든다.

cat <> minio.credentials
[default]
aws_access_key_id=minioadmin
aws_secret_access_key=minioadmin
EOF  

velero install \
--provider aws \
--use-restic \
--plugins velero/velero-plugin-for-aws:v1.2.1 \
--bucket nginx-deployment \
--secret-file ./minio.credentials \
--backup-location-config region=minio,s3ForcePathStyle=true,s3Url=http://[minio IP address]:9000  



3) nginx pod 생성

kubectl create ns nginx-test
kubectl get ns
kubectl create deploy nginx --image nginx --replicas=2 -n nginx-test
kubectl get pods -n nginx-test
watch kubectl get pods -n nginx-test
kubectl create service nodeport nginx --tcp=80:80 -n nginx-test
kubectl get all -n nginx-test

4) 백업하기

velero backup create first-backup --include-namespaces nginx-test 
velero backup describe first-backup



kubectl get backups -n velero
velero backup get
kubectl get all -n nginx-test

5) 복원하기

kubectl delete ns nginx-test
kubectl get all -n nginx-test

velero restore get
kubectl get restore -n velero 

velero restore create firstbackup-restore1 --from-backup first-backup
velero restore describe firstbackup-restore1 

kubectl get all -n nginx-test

velero restore get
kubectl get restore -n velero   

velero delete backup --all

velero schedule get
kubectl get schedule -n velero
velero schedule create firstschedule --schedule="@every 1m" --include-namespaces nginx-test

velero describe schedule firstschedule

velero backup get
kubectl get schedule -n velero 
kubectl get backups -n velero

velero schedule delete firstschedule
kubectl get schedule -n velero
velero schedule get 

velero backup create second-backup --include-namespaces nginx-test --ttl 2h 
velero backup describe second-backup 

velero backup get


[Reference]

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

https://medium.com/@maheshd7878/restore-backup-migrate-kubernetes-cluster-with-velero-434fa151f1e8

https://www.debontonline.com/p/kubernetes.html

https://ichi.pro/ko/veleroleul-sayonghan-kubernetes-keulleoseuteo-maigeuleisyeon-146918669234861

https://teamsmiley.github.io/2020/10/10/kubernetes-backup-velero/

http://egloos.zum.com/dreams402/v/2663455

 

이글루스 종료 안내

이글루스가 종료되었습니다. 오랜 기간 동안 이글루스 서비스를 이용해주신 고객 여러분들께 진심으로 감사의 말씀을 전합니다. 아쉽게도 2023년 6월 16일에 이글루스 블로그 서비스가 종료되었

egloosbackup.egloos.com

 

 

 

blog migration project

written by 2021.12.12

https://hayleyshim.github.io/blog/k8s1