티스토리 뷰
wget https://github.com/vmware-tanzu/velero/releases/download/v1.7.1/velero-v1.7.1-linux-amd64.tar.gz |
역할소개
minio distriubuted mode
2. 실습환경
- 인프라
- virtualbox, vagrant
- 쿠버네티스 클러스터는 kubespray(https://github.com/choisungwook-vagrant/kubespray-onpremise)로 구성
- 클러스터 구성과 사양
- controlplane node 1개: 4core 4GB
- worker node 4개: 각각 4core 2GB
3. Minio 설치
(admin-k8s:velero) root@k8s6-m:/home/minio# wget https://dl.min.io/server/minio/release/linux-amd64/minio
--2022-11-27 16:15:59-- https://dl.min.io/server/minio/release/linux-amd64/minio
Resolving dl.min.io (dl.min.io)... 138.68.11.125, 178.128.69.202
Connecting to dl.min.io (dl.min.io)|138.68.11.125|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 102510592 (98M) [application/octet-stream]
Saving to: ‘minio’
minio 100%[===========================================>] 97.76M 652KB/s in 4m 50s
2022-11-27 16:20:49 (345 KB/s) - ‘minio’ saved [102510592/102510592]
(admin-k8s:velero) root@k8s6-m:/home/minio# chmod +x minio
(admin-k8s:velero) root@k8s6-m:/home/minio# ./minio server /data
Formatting 1st pool, 1 set(s), 1 drives per set.
WARNING: Host local has more than 0 drives of set. A host failure will result in data becoming unavailable.
Warning: Default parity set to 0. This can lead to data loss.
WARNING: Detected default credentials 'minioadmin:minioadmin', we recommend that you change these values with 'MINIO_ROOT_USER' and 'MINIO_ROOT_PASSWORD' environment variables
MinIO Object Storage Server
Copyright: 2015-2022 MinIO, Inc.
License: GNU AGPLv3 <https://www.gnu.org/licenses/agpl-3.0.html>
Version: RELEASE.2022-11-26T22-43-32Z (go1.19.3 linux/amd64)
Status: 1 Online, 0 Offline.
API: http://172.16.12.64:9000 http://10.0.2.15:9000 http://192.168.100.10:9000 http://172.17.0.1:9000 http://127.0.0.1:9000
RootUser: minioadmin
RootPass: minioadmin
Console: http://172.16.12.64:38095 http://10.0.2.15:38095 http://192.168.100.10:38095 http://172.17.0.1:38095 http://127.0.0.1:38095
RootUser: minioadmin
RootPass: minioadmin
Command-line: https://min.io/docs/minio/linux/reference/minio-mc.html#quickstart
$ mc alias set myminio http://172.16.12.64:9000 minioadmin minioadmin
Documentation: https://min.io/docs/minio/linux/index.html
로그인 후 velero가 사용한 bucket을 생성합니다.
4. Velero 설치
helm repo를 추가합니다.
|
helm repo add vmware-tanzu https://vmware-tanzu.github.io/helm-charts |
|
helm repo update |
velero차트를 이용해서 minio를 릴리즈합니다. 사용한 옵션은 아래와 같습니다. 리소스 자원이 없어서 resource memory 필드는 적게 설정했습니다.
- initContainers: aws 플러그인을 설치하는 컨테이너
- congiruation: provider 설정
- credentials: provider 계정/비밀번호
- snapshotEnabled: 테스트 목적이여서 비활성화 했습니다.
|
initContainers: |
|
- name: velero-plugin-for-aws |
|
image: velero/velero-plugin-for-aws:v1.2.0 |
|
imagePullPolicy: IfNotPresent |
|
volumeMounts: |
|
- mountPath: /target |
|
name: plugins |
|
|
|
configuration: |
|
provider: aws |
|
backupStorageLocation: |
|
name: aws |
|
bucket: velero |
|
config: |
|
region: minio |
|
s3ForcePathStyle: true |
|
publicUrl: http://minio.backup.svc:32000 |
|
s3Url: http://minio.backup.svc:32000 |
|
|
|
credentials: |
|
useSecret: true |
|
secretContents: |
|
cloud: | |
|
[default] |
|
aws_access_key_id = rootUser |
|
aws_secret_access_key = rootpass123 |
|
|
|
snapshotsEnabled: false |
|
deployRestic: true |
|
|
|
restic: |
|
resources: |
|
requests: |
|
cpu: 500m |
|
memory: 256Mi |
|
limits: |
|
cpu: 1000m |
|
memory: 256Mi |
install명령어로 차트를 릴리즈합니다.
helm install -n backup -f values.yaml velero vmware-tanzu/velero
pod로그에서 에러가 없으면 veleor설치 성공입니다.
kubectl logs deploy/velero -n backup -f
velero와 minio연결은 backupstoragelocations api로 알수 있습니다. Available상태이면 연결성공입니다.
kubectl get backupstoragelocations -n backup
velero, minio설치가 성공하면 아래처럼 리소스가 보입니다.
5. velero클라이언트 설치
helm으로 설치한 거는 velero서버이고 서버에게 작업내용을 전달할 클라이언트를 별도로 설치해야합니다. 설치방법은 github 릴리즈페이지에서 압축파일을 다운로드 받고 압축을 해제하면 끝입니다. 아래 예제는 1.7.1버전을 다운로드 받았습니다.
velero클라이언트는 디폴트로 velelro서버에게 요청할때 velero 네임스페이스로 찾습니다.
wget https://github.com/vmware-tanzu/velero/releases/download/v1.7.1/velero-v1.7.1-linux-amd64.tar.gz
6. 백업 예제
백업 예제는 공식문서 예제(https://velero.io/docs/main/examples/)를 사용했습니다. 실습을 위해 LoadBalancer 서비스 타입을 사용할 수 있어야 합니다.
6.1 nginx 배포
velero gith repo를 다운로드 받습니다.
|
git clone https://github.com/vmware-tanzu/velero.git |
|
cd velero |
예제 nginx 리소스를 릴리즈합니다.
kubectl apply -f examples/nginx-app/base.yaml
성공적으로 릴리즈되면 nginx-example 네임스페이스에 쿠버네티스 리소스가 릴리즈됩니다.
LoadBalacner External-IP로 접속하면 nginx index.html페이지가 보입니다.
6.2 백업 예제
velero클라이언트에서 명령어를 입력하여 velero컨트롤러에게 백업을 요청합니다. helm에서 설정한 storage이름과 backup 데이터 이름을 설정합니다.
|
./velero backup create nginx-backup \ |
|
--namespace backup \ |
|
--include-namespaces \ |
|
--storage-location aws \ |
|
nginx-example |
백업 성공/실패 여부는 backup get으로 확인할 수 있습니다. 성공하면 Completed상태로 변합니다.
./velero backup get --namespace backup
minio로 이동하면 backup요청한 이름이 버킷에 저장되어 있습니다.
복원 예제
복원하기 위해 nginx-example에 있는 모든 리소스를 삭제합니다.
kubectl delete namespaces nginx-example
restore명령어와 백업데이터를 입력하면 복원요청이 velero컨트롤러에게 전달됩니다.
./velero restore create --namespace backup --from-backup nginx-backup2
복원 실패 또는 성공여부는 restore get으로 확인할 수 있습니다. 성공하면 Completed상태로 표시됩니다.
삭제되었던 nginx-example네임스페이스가 다시 생성되고 리소스도 복원되었습니다. AGE를 보시면 12s로 방금 막 복원되었다는 것을 알 수 있습니다.
kubectl get all -n nginx-example
- Total
- Today
- Yesterday
- Oracle
- directory copy 후 startup 에러
- 앤시블
- 테라폼
- 트리이스
- [오라클 튜닝] sql 튜닝
- 스토리지 클레스
- 튜닝
- 코로나19
- [오라클 튜닝] instance 튜닝2
- 커널
- 오라클 트러블 슈팅(성능 고도화 원리와 해법!)
- 버쳐박스
- 오라클
- 설치하기(HP-UX)
- ORACLE 트러블 슈팅(성능 고도화 원리와 해법!)
- 여러서버 컨트롤
- MSA
- 오라클 홈디렉토리 copy 후 startup 에러
- 오라클 인스턴트클라이언트(InstantClient) 설치하기(HP-UX)
- 쿠버네티스
- K8s
- CVE 취약점 점검
- (InstantClient) 설치하기(HP-UX)
- 우분투
- startup 에러
- ubuntu
- 키알리
- 5.4.0.1072
- pod 상태
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |