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를 사용합니다.
  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를 설치합니다.
  1. VMware 제품 다운로드 페이지에서 vSphere with Tanzu용으로 서명된 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