감독자의 TKG 클러스터에서 실행되는 워크로드를 백업 및 복원하려면 데이터스토어를 생성하고 Kubernetes 클러스터에 Velero를 Restic과 함께 설치합니다.

개요

TKG 클러스터는 가상 시스템 노드에서 실행됩니다. TKG 클러스터 워크로드를 백업하고 복원하려면 클러스터에 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를 사용합니다.
  1. MinIO를 설치합니다.
    wget https://dl.min.io/server/minio/release/linux-amd64/minio
  2. MinIO에 실행 권한을 부여합니다.
    chmod +x minio
  3. MinIO용 파일 시스템에 디렉토리를 생성합니다.
    mkdir /DATA-MINIO
  4. MinIO 서버를 시작합니다.
    ./minio server /DATA-MINIO
  5. MinIO 서버가 시작되면 끝점 URL, AccessKey 및 SecretKey를 비롯한 중요 데이터스토어 인스턴스 세부 정보가 제공됩니다. 테이블에 끝점 URL, AccessKey 및 SecretKey를 기록하십시오.
    데이터스토어 메타데이터
    끝점 URL
    AccessKey
    SecretKey
  6. 브라우저에서 MinIO 서버 끝점 URL을 열어 MinIO 데이터스토어로 이동합니다.
  7. MinIO 서버에 로그인하고 AccessKey 및 SecretKey를 제공합니다.
  8. MinIO as a Service를 사용하도록 설정하려면 minio.service 스크립트를 다운로드하여 자동 시작을 위해 MinIO를 구성합니다.
    curl -O https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/minio.service
  9. minio.service 스크립트를 편집하고 ExecStart에 대해 다음 값을 추가합니다.
    ExecStart=/usr/local/bin/minio server /DATA-MINIO path
  10. 수정된 스크립트를 저장합니다.
  11. 다음 명령을 실행하여 MinIO 서비스를 구성합니다.
    cp minio.service /etc/systemd/system 
    cp minio /usr/local/bin/ 
    systemctl daemon-reload 
    systemctl start minio 
    systemctl status minio 
    systemctl enable minio
  12. MinIO 브라우저를 시작하고 개체 저장소에 로그인하여 백업 및 복원을 위한 MinIO 버킷을 생성합니다.
  13. 버킷 생성 아이콘을 클릭합니다.
  14. 버킷 이름(예: my-cluster-backups)을 입력합니다.
  15. 버킷이 생성되었는지 확인합니다.
  16. 기본적으로 새 MinIO 버킷은 읽기 전용입니다. Velero 독립형 백업 및 복원을 위해서는 MinIO 버킷이 읽기-쓰기여야 합니다. 버킷을 읽기-쓰기로 설정하려면 버킷을 선택하고 말줄임표(점) 링크를 클릭합니다.
  17. 정책 편집을 선택합니다.
  18. 정책을 읽기 및 쓰기로 변경합니다.
  19. 추가를 클릭합니다.
  20. 대화상자를 닫으려면 X를 클릭합니다.

Velero CLI 설치

VM 클라이언트 또는 로컬 시스템에 Velero CLI를 설치합니다.

이 설명서에 사용된 버전은 Tanzu Kubernetes Grid 2.2.0용 Velero 1.9.7입니다.
  1. VMware Customer Connect 포털의 Tanzu Kubernetes Grid 제품 다운로드 페이지에서 Velero를 다운로드합니다.
    참고: VMware의 지원을 받으려면 VMware에서 서명한 Velero 바이너리를 사용해야 합니다.
  2. 명령줄을 열고 디렉토리를 Velero CLI 다운로드로 변경합니다.
  3. 다운로드 파일의 압축을 풉니다. 예:
    gunzip velero-linux-vX.X.X_vmware.1.gz
  4. Velero 바이너리를 확인합니다.
    ls -l
  5. Velero CLI에 실행 권한을 부여합니다.
    chmod +x velero-linux-vX.X.X_vmware.1 
  6. Velero CLI를 시스템 경로로 이동하여 전체적으로 사용할 수 있도록 합니다.
    cp velero-linux-vX.X.X_vmware.1 /usr/local/bin/velero 
  7. 설치를 확인합니다.
    velero version

Tanzu Kubernetes 클러스터에 Velero 및 Restic 설치

Velero CLI 컨텍스트는 kubectl 컨텍스트를 자동으로 따릅니다. Velero CLI 명령을 실행하여 대상 클러스터에 Velero 및 Restic을 설치하기 전에 kubectl 컨텍스트를 설정합니다.
  1. MinIO 버킷의 이름을 검색합니다. 예: my-cluster-backups
  2. MinIO 버킷에 대한 AccessKey 및 SecretKey를 가져옵니다.
  3. Velero CLI가 작동할 클러스터를 알 수 있도록 대상 Kubernetes 클러스터에 대한 컨텍스트를 설정합니다.
    kubectl config use-context tkgs-cluster-name
  4. 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
  5. 파일을 저장하고 파일이 제자리에 있는지 확인합니다.
    ls
  6. 다음 명령을 실행하여 대상 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
  7. Velero 및 Restic의 설치를 확인합니다.
    kubectl logs deployment/velero -n velero
  8. velero 네임스페이스를 확인합니다.
    kubectl get ns
  9. velerorestic 포드를 확인합니다.
    kubectl get all -n velero

Restic DaemonSet 문제 해결(필요한 경우)

Kubernetes 클러스터에서 3-포드 Restic DaemonSet을 실행하려면 Restic DaemonSet 규격을 업데이트하고 hostPath를 수정해야 할 수 있습니다. 이 문제에 대한 자세한 내용은 Velero 설명서에서 Restic 통합을 참조하십시오.
  1. 3-포드 Restic DaemonSet을 확인합니다.
    kubectl get pod -n velero

    포드가 CrashLoopBackOff 상태인 경우 다음과 같이 편집합니다.

  2. edit 명령을 실행합니다.
    kubectl edit daemonset restic -n velero
  3. hostPath를 /var/lib/kubelet/pods에서 /var/vcap/data/kubelet/pods로 변경합니다.
    - hostPath:
        path: /var/vcap/data/kubelet/pods
  4. 파일을 저장합니다.
  5. 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를 반환하는 경우 제한 및 요청 메모리 설정을 늘립니다.
  1. 다음 명령을 실행합니다.
    kubectl edit deployment/velero -n velero
  2. 제한 및 요청 메모리 설정을 기본값인 256Mi128Mi에서 512Mi256Mi로 변경합니다.
        
    ports:
    - containerPort: 8085
      name: metrics
      protocol: TCP
    resources:
      limits:
        cpu: "1"
        memory: 512Mi
      requests:
        cpu: 500m
        memory: 256Mi
    terminationMessagePath: /dev/termination-log
    terminationMessagePolicy: File