Tanzu Kubernetes에서 워크로드를 백업 및 복원하려면 데이터스토어를 생성하고 Kubernetes 클러스터에 Velero를 Restic과 함께 설치합니다.
개요
Tanzu Kubernetes 클러스터는 가상 시스템 노드에서 실행됩니다. Tanzu Kubernetes 클러스터를 백업하고 복원하려면 클러스터에 Velero 및 Restic을 설치합니다.
사전 요구 사항
Tanzu Kubernetes 클러스터에서 실행되는 워크로드를 백업하고 복원하기 위해 Velero 및 Restic을 설치하려면 환경이 다음 사전 요구 사항을 충족하는지 확인합니다.
- 여러 워크로드 백업을 저장하기에 충분한 스토리지가 있는 Linux VM. 이 VM에 MinIO를 설치합니다.
- kubectl용 vSphere 플러그인 및 kubectl을 포함하여 vSphere에 대한 Kubernetes CLI 도구가 설치되어 있는 Linux VM. 이 클라이언트 VM에 Velero CLI를 설치합니다. 이러한 VM이 없는 경우 Velero CLI를 로컬로 설치할 수 있지만 그에 따라 설치 단계를 조정해야 합니다.
- Kubernetes 환경을 인터넷에 액세스할 수 있으며 클라이언트 VM에서 연결할 수 있습니다.
MinIO 개체 저장소 설치 및 구성
Velero에는 Kubernetes 워크로드 백업의 대상으로 S3 호환 개체 저장소가 필요합니다. Velero는 이러한
개체 저장소 제공자를 여러 개 지원합니다. 간단히 하기 위해 이 지침에서는 개체 저장소 VM에서 로컬로 실행되는 S3 호환 스토리지 서비스인
MinIO를 사용합니다.
- MinIO를 설치합니다.
wget https://dl.min.io/server/minio/release/linux-amd64/minio
- MinIO에 실행 권한을 부여합니다.
chmod +x minio
- MinIO용 파일 시스템에 디렉토리를 생성합니다.
mkdir /DATA-MINIO
- MinIO 서버를 시작합니다.
./minio server /DATA-MINIO
- MinIO 서버가 시작되면 끝점 URL, AccessKey 및 SecretKey를 비롯한 중요 데이터스토어 인스턴스 세부 정보가 제공됩니다. 테이블에 끝점 URL, AccessKey 및 SecretKey를 기록하십시오.
데이터스토어 메타데이터 값 끝점 URL AccessKey SecretKey - 브라우저에서 MinIO 서버 끝점 URL을 열어 MinIO 데이터스토어로 이동합니다.
- MinIO 서버에 로그인하고 AccessKey 및 SecretKey를 제공합니다.
- MinIO as a Service를 사용하도록 설정하려면
minio.service
스크립트를 다운로드하여 자동 시작을 위해 MinIO를 구성합니다.curl -O https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/minio.service
minio.service
스크립트를 편집하고ExecStart
에 대해 다음 값을 추가합니다.ExecStart=/usr/local/bin/minio server /DATA-MINIO path
- 수정된 스크립트를 저장합니다.
- 다음 명령을 실행하여 MinIO 서비스를 구성합니다.
cp minio.service /etc/systemd/system cp minio /usr/local/bin/ systemctl daemon-reload systemctl start minio systemctl status minio systemctl enable minio
- MinIO 브라우저를 시작하고 개체 저장소에 로그인하여 백업 및 복원을 위한 MinIO 버킷을 생성합니다.
- 버킷 생성 아이콘을 클릭합니다.
- 버킷 이름(예:
my-cluster-backups
)을 입력합니다. - 버킷이 생성되었는지 확인합니다.
- 기본적으로 새 MinIO 버킷은 읽기 전용입니다. Velero 독립형 백업 및 복원을 위해서는 MinIO 버킷이 읽기-쓰기여야 합니다. 버킷을 읽기-쓰기로 설정하려면 버킷을 선택하고 말줄임표(점) 링크를 클릭합니다.
- 정책 편집을 선택합니다.
- 정책을 읽기 및 쓰기로 변경합니다.
- 추가를 클릭합니다.
- 대화상자를 닫으려면 X를 클릭합니다.
Velero CLI 설치
VM 클라이언트 또는 로컬 시스템에 Velero CLI를 설치합니다.
- VMware 제품 다운로드 페이지에서 vSphere with Tanzu용으로 서명된 Velero 바이너리 버전을 다운로드합니다.
참고: VMware의 지원을 받으려면 VMware에서 서명한 Velero 바이너리를 사용해야 합니다.
- 명령줄을 열고 디렉토리를 Velero CLI 다운로드로 변경합니다.
- 다운로드 파일의 압축을 풉니다. 예:
gunzip velero-linux-vX.X.X_vmware.1.gz
- Velero 바이너리를 확인합니다.
ls -l
- Velero CLI에 실행 권한을 부여합니다.
chmod +x velero-linux-vX.X.X_vmware.1
- Velero CLI를 시스템 경로로 이동하여 전체적으로 사용할 수 있도록 합니다.
cp velero-linux-vX.X.X_vmware.1 /usr/local/bin/velero
- 설치를 확인합니다.
velero version
Tanzu Kubernetes 클러스터에 Velero 및 Restic 설치
Velero CLI 컨텍스트는 kubectl 컨텍스트를 자동으로 따릅니다. Velero CLI 명령을 실행하여 대상 클러스터에 Velero 및 Restic을 설치하기 전에 kubectl 컨텍스트를 설정합니다.
- MinIO 버킷의 이름을 검색합니다. 예:
my-cluster-backups
- MinIO 버킷에 대한 AccessKey 및 SecretKey를 가져옵니다.
- Velero CLI가 작동할 클러스터를 알 수 있도록 대상 Kubernetes 클러스터에 대한 컨텍스트를 설정합니다.
kubectl config use-context tkgs-cluster-name
credentials-minio
라는 암호 파일을 생성합니다. 이 파일을 수집한 MinIO 서버 액세스 자격 증명으로 업데이트합니다. 예:aws_access_key_id = 0XXNO8JCCGV41QZBV0RQ aws_secret_access_key = clZ1bf8Ljkvkmq7fHucrKCkxV39BRbcycGeXQDfx
참고: "NoCredentialProviders: 체인에 올바른 제공자가 없습니다."라는 설명과 함께 "백업 저장소를 가져오는 동안 오류가 발생했습니다." 오류 메시지가 표시되면 자격 증명 파일의 시작 부분에[default]
줄을 추가합니다. 예:[default] aws_access_key_id = 0XXNO8JCCGV41QZBV0RQ aws_secret_access_key = clZ1bf8Ljkvkmq7fHucrKCkxV39BRbcycGeXQDfx
- 파일을 저장하고 파일이 제자리에 있는지 확인합니다.
ls
- 다음 명령을 실행하여 대상 Kubernetes 클러스터에 Velero 및 Restic을 설치합니다. 두 URL을 모두 MinIO 인스턴스의 URL로 바꿉니다.
velero install \ --provider aws \ --plugins velero/velero-plugin-for-aws:v1.0.0 \ --bucket tkgs-velero \ --secret-file ./credentials-minio \ --use-volume-snapshots=false \ --use-restic \ --backup-location-config \ region=minio,s3ForcePathStyle="true",s3Url=http://10.199.17.63:9000,publicUrl=http://10.199.17.63:9000
- Velero 및 Restic의 설치를 확인합니다.
kubectl logs deployment/velero -n velero
velero
네임스페이스를 확인합니다.kubectl get ns
velero
및restic
포드를 확인합니다.kubectl get all -n velero
Restic DaemonSet 문제 해결(필요한 경우)
Kubernetes 클러스터에서 3-포드 Restic DaemonSet을 실행하려면 Restic DaemonSet 규격을 업데이트하고 hostPath를 수정해야 할 수 있습니다. 이 문제에 대한 자세한 내용은 Velero 설명서에서
Restic 통합을 참조하십시오.
- 3-포드 Restic DaemonSet을 확인합니다.
kubectl get pod -n velero
포드가 CrashLoopBackOff 상태인 경우 다음과 같이 편집합니다.
edit
명령을 실행합니다.kubectl edit daemonset restic -n velero
- hostPath를
/var/lib/kubelet/pods
에서/var/vcap/data/kubelet/pods
로 변경합니다.- hostPath: path: /var/vcap/data/kubelet/pods
- 파일을 저장합니다.
- 3-포드 Restic DaemonSet을 확인합니다.
kubectl get pod -n velero
NAME READY STATUS RESTARTS AGE restic-5jln8 1/1 Running 0 73s restic-bpvtq 1/1 Running 0 73s restic-vg8j7 1/1 Running 0 73s velero-72c84322d9-le7bd 1/1 Running 0 10m
Velero 메모리 제한 조정(필요한 경우)
Velero 백업이 여러 시간 동안
status=InProgress
를 반환하는 경우 제한 및 요청 메모리 설정을 늘립니다.
- 다음 명령을 실행합니다.
kubectl edit deployment/velero -n velero
- 제한 및 요청 메모리 설정을 기본값인
256Mi
및128Mi
에서512Mi
및256Mi
로 변경합니다.ports: - containerPort: 8085 name: metrics protocol: TCP resources: limits: cpu: "1" memory: 512Mi requests: cpu: 500m memory: 256Mi terminationMessagePath: /dev/termination-log terminationMessagePolicy: File