클러스터 워크로드 백업 및 복원

이 항목에서는 독립형 관리 클러스터가 있는 TKG(Tanzu Kubernetes Grid) 워크로드 클러스터에서 호스팅되는 워크로드 및 동적 스토리지 볼륨을 백업하고 복원하는 방법을 설명합니다.

클러스터 인프라를 백업하고 복원하려면 독립형 관리 클러스터 및 워크로드 클러스터 개체 자체에 관리 및 워크로드 클러스터 인프라 백업 및 복원을 참조하십시오.

Supervisor 클러스터, 그리고 Supervisor 클러스터가 생성하는 워크로드 클러스터 등 vSphere with Tanzu 클러스터를 백업하고 복원하려면 VMware vSphere 8.0 설명서vSphere with Tanzu 백업 및 복원을 참조하십시오.

Velero 설정

오픈 소스 커뮤니티 표준 도구인 Velero를 사용하여 TKG 독립형 관리 클러스터 인프라와 워크로드를 백업하고 복원할 수 있습니다.

Velero는 백업을 저장하기 위해 다양한 스토리지 제공자를 지원합니다. Velero는 다음도 지원합니다.

  • 백업 및 복원 이벤트 전후에 사용자 지정 프로세스를 실행하도록 백업복원용 전/후 후크.
  • 백업/복원에 적합하지 않은 워크로드 또는 클러스터 상태의 측면을 제외합니다.

Tanzu Kubernetes Grid 구독에는 VMware의 테스트를 거친 Velero 호환 배포 지원이 포함되며, Tanzu Kubernetes Grid 다운로드 페이지에 있습니다.

TKG 클러스터를 백업하고 복원하려면 다음이 필요합니다.

  • 로컬 워크스테이션에서 실행되는 Velero CLI v1.10.3. Velero CLI 설치를 참조하십시오.
  • 백업을 저장할 위치가 있는 스토리지 제공자. 스토리지 제공자 설정을 참조하십시오.
  • 백업하려는 클러스터에서 실행되는 Velero 서버:

위의 사전 요구 사항을 완료한 후에는 Velero를 사용하여 클러스터 간에 워크로드를 마이그레이션할 수도 있습니다. 지침은 Velero 설명서의 클러스터 마이그레이션리소스 필터링을 참조하십시오.

Velero CLI 설치

주의

이전 버전의 TKG와 함께 배포된 대로 Velero CLI v1.9.x 이하를 이미 설치한 경우 v1.10.3으로 업그레이드해야 합니다. 이전 Velero 버전은 v1.10 이상에서 사용되는 CRD에서 작동하지 않습니다. 자세한 내용은 아래의 Velero 업그레이드를 참조하십시오.

Velero CLI v1.10.3을 설치하려면 다음을 수행합니다.

  1. Tanzu Kubernetes Grid 다운로드 페이지로 이동한 후 VMware Customer Connect 자격 증명으로 로그인합니다.
  2. 제품 다운로드에서 다운로드로 이동을 클릭합니다.
  3. Velero 항목으로 스크롤하고 워크스테이션 OS용 Velero CLI .gz 파일을 다운로드합니다. 파일 이름은 velero-linux-, velero-mac- 또는 velero-windows64-로 시작합니다.
  4. gunzip 명령 또는 선택한 추출 도구를 사용하여 다음의 바이너리 압축을 풉니다.

    gzip -d <RELEASE-TARBALL-NAME>.gz
    
  5. 플랫폼의 CLI 바이너리 이름을 velero로 변경하고 실행 가능한지 확인한 후 PATH에 추가합니다.

    macOS 및 Linux
    1. 바이너리를 /usr/local/bin 폴더로 이동하고 이름을 velero로 바꿉니다.
    2. 파일을 실행 파일로 만듭니다.
    chmod +x /usr/local/bin/velero
    
    Windows
    1. Program Files\velero 폴더를 생성하고 바이너리를 이 폴더로 복사합니다.
    2. 바이너리 이름을 velero.exe로 바꿉니다.
    3. velero 폴더를 마우스 오른쪽 버튼으로 클릭하고 속성(Properties) > 보안(Security)을 선택한 후 사용자 계정에 모든 권한(Full Control) 권한이 있는지 확인합니다.
    4. Windows 검색을 사용하여 env를 검색합니다.
    5. 시스템 환경 변수 편집(Edit the system environment variables)를 선택하고 환경 변수(Environment Variables) 버튼을 클릭합니다.
    6. 시스템 변수(System variables) 아래에서 Path 행을 선택하고 편집(Edit)을 클릭합니다.
    7. 새로 만들기(New)를 클릭하여 새 행을 추가하고 velero 바이너리에 경로를 입력합니다.

Velero 업그레이드

Velero v1.10.3은 v1.9.x와 다른 CRD를 사용합니다. 또한 Velero v1.10은 Kopia와 Restic을 업로드자로 채택했으며, 이로 인해 구성 요소 및 명령의 이름 지정과 Velero의 작동 방식이 몇 가지 변경되었습니다. v1.9.x와 v1.10 간의 변경 내용을 중단하는 방법에 대한 자세한 내용은 Velero v1.10 Changelog의 긴급 변경 사항을 참조하십시오. 이전 버전의 TKG를 사용하여 Velero v1.9.x를 설치한 경우 Velero를 업그레이드해야 합니다.

  1. Velero CLI 설치 절차에 따라 Velero v1.10.3을 설치합니다.
  2. CRD 정의를 Velero v1.10 바이너리로 업데이트합니다.

    velero install --crds-only --dry-run -o yaml | kubectl apply -f -
    
  3. Velero v1.10에서 발생한 구성 요소 이름 변경과 일치하도록 Velero 배포 및 데몬 집합 구성을 업데이트합니다.

    아래 명령에서 uploader_typerestic 또는 kopia일 수 있습니다.

    kubectl get deploy -n velero -ojson \
    | sed "s#\"image\"\: \"velero\/velero\:v[0-9]*.[0-9]*.[0-9]\"#\"image\"\: \"velero\/velero\:v1.10.0\"#g" \
    | sed "s#\"server\",#\"server\",\"--uploader-type=$uploader_type\",#g" \
    | sed "s#default-volumes-to-restic#default-volumes-to-fs-backup#g" \
    | sed "s#default-restic-prune-frequency#default-repo-maintain-frequency#g" \
    | sed "s#restic-timeout#fs-backup-timeout#g" \
    | kubectl apply -f -
    
  4. (선택 사항) restic 데몬 집합을 사용하는 경우 해당 구성 요소의 이름을 변경합니다.

    echo $(kubectl get ds -n velero restic -ojson) \
    | sed "s#\"image\"\: \"velero\/velero\:v[0-9]*.[0-9]*.[0-9]\"#\"image\"\: \"velero\/velero\:v1.10.0\"#g" \
    | sed "s#\"name\"\: \"restic\"#\"name\"\: \"node-agent\"#g" \
    | sed "s#\[ \"restic\",#\[ \"node-agent\",#g" \
    | kubectl apply -f -
    kubectl delete ds -n velero restic --force --grace-period 0 
    

자세한 내용은 Velero 설명서의 Velero 1.10으로 업그레이드를 참조하십시오.

스토리지 제공자 설정

Tanzu Kubernetes Grid 워크로드 클러스터 컨텐츠를 백업하려면 다음을 위한 스토리지 위치가 필요합니다.

  • 클러스터의 Kubernetes 메타데이터를 위한 클러스터 개체 스토리지 백업
  • 클러스터에서 사용하는 데이터의 볼륨 스냅샷

Velero 설명서의 백업 스토리지 위치 및 볼륨 스냅샷 위치를 참조하십시오. Velero는 다양한 스토리지 제공자를 지원합니다. 다음 중 하나일 수 있습니다.

  • 온라인 클라우드 스토리지 제공자.
  • 프록시된 환경 또는 에어갭 환경을 위한 MinIO와 같은 온-프레미스 개체 스토리지 서비스.

VMware는 각 클러스터에 고유한 스토리지 버킷을 전용으로 사용할 것을 권장합니다.

MinIO를 설정하려면 다음을 수행합니다.

  1. minIO 자격 증명과 스토리지 위치를 사용하여 minio 컨테이너 이미지를 실행합니다. 예를 들면 다음과 같습니다.

    $ docker run -d --name minio --rm -p 9000:9000 -e "MINIO_ACCESS_KEY=minio" -e "MINIO_SECRET_KEY=minio123" -e "MINIO_DEFAULT_BUCKETS=mgmt" gcr.io/velero-gcp/bitnami/minio:2021.6.17-debian-10-r7
    
  2. 자격 증명을 로컬 파일에 저장하여 velero install--secret-file 옵션에 전달합니다. 예를 들면 다음과 같습니다.

    [default]
    aws_access_key_id=minio
    aws_secret_access_key=minio123
    

vSphere용 스토리지

vSphere에서 클러스터 개체 스토리지 백업과 볼륨 스냅샷은 동일한 스토리지 위치에 저장됩니다. 이 위치는 AWS(Amazon Web Services)의 S3 호환 외부 스토리지이거나 MinIO와 같은 S3 제공자여야 합니다.

vSphere Velero용 스토리지를 설정하려면 v1.5.1 플러그인용 Vanilla Kubernetes 클러스터의 vSphere용 Velero 플러그인을 참조하십시오.

AWS용 스토리지

Velero on AWS용 스토리지를 설정하려면 AWS 저장소용 Velero 플러그인의 절차를 따르십시오.

  1. S33 버킷을 생성합니다.

  2. Velero 사용 권한을 설정합니다.

각 플러그인에 대해 필요에 따라 S3 스토리지를 설정합니다. 개체 저장소 플러그인은 클러스터 개체 백업을 저장 및 검색하고 볼륨 스냅샷은 데이터 볼륨을 저장하고 검색합니다.

Azure용 스토리지

Velero on Azure용 스토리지를 설정하려면 Azure 저장소용 Azure 플러그인의 절차를 따르십시오.

  1. Azure 스토리지 계정 및 Blob 컨테이너 생성

  2. VM 및 디스크가 포함된 리소스 그룹 가져오기

  3. Velero 사용 권한 설정

각 플러그인에 대해 필요에 따라 S3 스토리지를 설정합니다. 개체 저장소 플러그인은 클러스터 개체 백업을 저장 및 검색하고 볼륨 스냅샷은 데이터 볼륨을 저장하고 검색합니다.

워크로드 클러스터에 Velero 서버 배포

Velero 서버를 워크로드 클러스터에 배포하려면 velero install 명령을 실행합니다. 이 명령은 클러스터에 velero라는 네임스페이스를 생성하고 velero라는 배포를 클러스터에 배치합니다.

참고

클러스터에 Velero가 이미 설치되어 있는 경우 Velero 업그레이드의 단계를 수행합니다.

Velero 설치 옵션

Velero를 설치하려면 다음 옵션과 함께 velero install을 실행합니다.

  • --provider $PROVIDER: 예: aws
  • --plugins projects.registry.vmware.com/tkg/velero/velero-plugin-for-aws:v1.6.2_vmware.1
  • --bucket $BUCKET: S3 버킷의 이름
  • --backup-location-config region=$REGION: 버킷이 있는 AWS 지역
  • --snapshot-location-config region=$REGION: 버킷이 있는 AWS 지역
  • (선택 사항) --kubeconfig 현재 기본값이 아닌 클러스터에 Velero 서버를 설치.
  • (선택 사항) --secret-file ./VELERO-CREDS S3 버킷에 대한 Velero 액세스 권한을 부여하는 한 가지 방법은 다음과 같은 로컬 VELERO-CREDS 파일을 이 옵션으로 전달하는 것입니다.

    [default]
    aws_access_key_id=<AWS_ACCESS_KEY_ID>
    aws_secret_access_key=<AWS_SECRET_ACCESS_KEY>
    
  • 추가 옵션은 Velero 설치 및 시작을 참조하십시오.

velero install 명령을 실행하면 클러스터에 velero라는 네임스페이스를 생성하고 velero라는 배포를 클러스터에 배치합니다.

다음 섹션에 설명된 대로 velero install 명령을 실행하고 클러스터에서 Velero를 설정하는 방법은 인프라 및 스토리지 제공자에 따라 다릅니다.

vSphere의 클러스터에 Velero 설치

이 절차에서는 vSphere 독립형 관리 클러스터에서 관리하는 워크로드 클러스터에 Velero를 설치합니다.

Tanzu Kubernetes Grid 관리 클러스터 역할을 하는 vSphere with Tanzu Supervisor 클러스터에 Velero를 배포하려면 vSphere with Tanzu 지원 및 복원을 참조하십시오.

  1. 위의 Velero 설치 옵션에 있는 옵션과 함께 velero install을 실행하여 kubeconfig의 현재 기본 클러스터에 Velero 서버를 설치합니다.

    • 예를 들어 Velero 설명서의 MinIO 서버 설정 지침에 따라 MinIO를 개체 스토리지로 사용하려면 다음을 수행합니다.

      velero install --provider aws --plugins "projects.registry.vmware.com/tkg/velero/velero-plugin-for-aws:v1.6.2_vmware.1" --bucket velero --secret-file ./credentials-velero --backup-location-config "region=minio,s3ForcePathStyle=true,s3Url=minio_server_url" --snapshot-location-config region="default"
      
    • 자세한 내용은 vSphere v1.5.1 저장소용 Velero 플러그인에서 Vanilla Kubernetes 클러스터에 대한 설치 섹션을 참조하십시오.

    • 클러스터에 Velero 서버를 설치하면 클러스터에 velero라는 네임스페이스가 생성되고 velero라는 배포가 배치됩니다.

  2. 위의 velero install를 사용하여 자격 증명 파일을 --secret-file에 전달하지 않은 경우, 백업 S3 버킷에서 Velero에 대한 액세스 권한 부여를 구성합니다. 예를 들어 AWS에서는 Velero와 같은 호스팅된 애플리케이션을 제어하는 IAM 역할 nodes.tkg.cloud.vmware.com에 정책을 연결하여 S3 버킷에 대한 액세스를 허용합니다.

  3. vSphere용 Velero 플러그인을 추가하면 Velero가 S3 버킷을 사용하여 클러스터 개체를 저장하는 것 외에도 워크로드 데이터에 대한 CSI 볼륨 스냅샷을 저장할 수 있습니다.

    1. vSphere용 Velero 플러그인 v1.5.1 이미지를 다운로드합니다.
    2. CSI 드라이버가 사용하는 vSphere 자격 증명을 검색하여 암호 구성 파일 csi-vsphere.conf로 디코딩합니다.

      kubectl -n vmware-system-csi get secret vsphere-config-secret -o jsonpath='{.data.csi-vsphere\.conf}'| base64 -d > csi-vsphere.conf
      
    3. (선택 사항) 다음과 같은 암호 구성 파일 csi-vsphere.conf에서 vCenter IP 주소, 사용자 이름, 암호 값을 검사하고 확인합니다.

      cluster-id = "CLUSTER-ID"
      
      [VirtualCenter "VCENTER-IP"]
      user = "USERNAME"
      password = "PASSWORD"
      port = "443"
      
    4. 구성 파일을 사용하여 네임스페이스 velerovelero-vsphere-config-secret 암호를 생성합니다.

      kubectl -n velero create secret generic velero-vsphere-config-secret --from-file=csi-vsphere.conf
      
    5. 암호를 참조하는 Velero 플러그인에 ConfigMap 파일 velero-plugin.conf를 생성합니다.

      apiVersion: v1
      kind: ConfigMap
      metadata:
        name: velero-vsphere-plugin-config
      data:
        cluster_flavor: VANILLA
        vsphere_secret_name: velero-vsphere-config-secret
        vsphere_secret_namespace: velero
      
    6. ConfigMap 적용:

      kubectl -n velero apply -f velero-plugin.conf
      
    7. 플러그인 추가:

      velero plugin add PLUGIN-IMAGE
      

      여기서 PLUGIN-IMAGEvSphere 저장소용 Velero 플러그인 v1.5.1에 있는 컨테이너 이미지의 레지스트리 경로입니다(예: http://projects.registry.vmware.com/tkg/velero/velero-plugin-for-vsphere:v1.5.1_vmware.1).

    8. 계정을 생성할 때 아직 포함하지 않은 경우 Tanzu Kubernetes Grid 계정에 생성한 역할에 다음 VirtualMachine 사용 권한을 추가하여 플러그인을 사용하도록 설정합니다.

      • 구성 > 디스크 변경 추적 전환
      • 프로비저닝 > 읽기 전용 디스크 액세스 허용
      • 프로비저닝 > 가상 시스템 다운로드 허용
      • 스냅샷 관리 > 스냅샷 생성
      • 스냅샷 관리 > 스냅샷 제거

AWS의 클러스터에 Velero 설치

  1. AWS의 워크로드 클러스터에 Velero를 설치하려면 AWS 저장소용 Velero 플러그인의 Velero 설치 및 시작 절차를 따르십시오.
  2. 위의 Velero 설치 옵션에 있는 옵션과 함께 velero install을 실행합니다.

Azure의 클러스터에 Velero 설치

  1. Azure의 워크로드 클러스터에 Velero를 설치하려면 Azure 저장소용 Velero 플러그인의 Velero 설치 및 시작 절차를 따르십시오.
  2. 위의 Velero 설치 옵션에 있는 옵션과 함께 velero install을 실행합니다.

워크로드 백업 및 복원

Velero를 사용하여 전체 클러스터 또는 특정 네임스페이스에 대해 워크로드 클러스터의 현재 워크로드와 영구 볼륨 상태를 백업하고 복원합니다.

워크로드 백업

워크로드 클러스터의 컨텐츠를 백업하려면 다음을 수행합니다.

  1. 필요한 경우 vSphere용 Velero 플러그인과 함께 Velero 서버를 워크로드 클러스터에 배포하려면 클러스터에 Velero 서버 배포 지침을 따르십시오.

  2. 클러스터 컨텐츠 백업:

    velero backup create your_backup_name
    
  3. velero backuptransport is closing 오류를 반환하는 경우 Velero 설명서의 설치 후 리소스 요청 및 제한 업데이트 설명서에 설명된 대로 메모리 제한을 늘인 후 다시 시도하십시오.

참고

Windows 및 다중 OS 워크로드 클러스터의 백업 및 복원은 지원되지 않습니다.

워크로드 복원

백업에서 워크로드 클러스터의 컨텐츠를 복원하려면 다음을 수행합니다.

  1. 새 클러스터를 생성합니다. 클러스터 백업을 기존 클러스터로 복원할 수 없습니다.

  2. 필요한 경우 vSphere용 Velero 플러그인과 함께 Velero 서버를 새 클러스터에 배포하려면 클러스터에 Velero 서버 배포 지침을 따르십시오.

  3. 클러스터 컨텐츠 복원:

    velero backup get
    velero restore create your_restore_name --from-backup your_backup_name
    
check-circle-line exclamation-circle-line close-line
Scroll to top icon