備份和還原叢集工作負載

本主題說明如何針對具有獨立管理叢集的 TKG,備份及還原其託管於 Tanzu Kubernetes Grid (TKG) 工作負載叢集上的工作負載和動態儲存磁碟區。

若要備份和還原叢集基礎結構、獨立管理叢集和工作負載叢集物件本身,請參閱備份和還原管理叢集和工作負載叢集的基礎結構

若要備份和還原 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 在叢集之間遷移工作負載。有關說明,請參見 Velero 文件中的叢集遷移資源篩選

安裝 Velero CLI

注意

如果已安裝 Velero CLI v1.9.x 或更早版本 (隨早期版本的 TKG 一起發行),則需要升級到 v1.10.3。較舊的 Velero 版本不能與 v1.9 及更新版本中使用的 CRD 一起使用。如需更多資訊,請參閱下面的升級 Velero

若要安裝 Velero CLI v1.10.3,請執行以下動作:

  1. 移至 Tanzu Kubernetes Grid 下載頁面,然後使用您的 VMware Customer Connect 認證登入。
  2. 產品下載 (Product Downloads) 下,按一下移至下載 (Go to Downloads)
  3. 捲動到 Velero 項目,然後下載適用於您的工作站作業系統的 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 Search 搜尋 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 with 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. 使用 Velero v1.10 二進位檔更新 CRD 定義。

    velero install --crds-only --dry-run -o yaml | kubectl apply -f -
    
  3. 更新 Velero 部署和精靈集組態,以配合在 Velero v1.10 中的元件重新命名。

    在以下命令中,uploader_type 可以是 restickopia

    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 支援各種儲存區提供者,這些提供者可以是:

  • 線上雲端儲存區提供者。
  • 用於 Proxy 或氣隙環境的內部部署物件儲存區服務,例如 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 上,叢集物件儲存區備份和磁碟區快照將儲存到同一儲存區位置。此位置必須是 Amazon Web Services (AWS) 或 S3 提供者 (如 MinIO) 上與 S3 相容的外部儲存區。

若要為 vSphere 上的 Velero 設定儲存區,請參閱適用於 v1.5.1 外掛程式的 Vanilla Kubernetes 叢集中的 Velero Plugin for vSphere

用於 AWS 的儲存區和 AWS 上的儲存區

若要為 AWS 上的 Velero 設定儲存區,請依照適用於 AWS 存放庫的 Velero 外掛程式中的程序操作:

  1. 建立 S3 值區

  2. 設定 Velero 的權限

視需要為每個外掛程式設定 S3 儲存區。物件儲存外掛程式會儲存和擷取叢集物件備份,而磁碟區快照程式則會儲存和擷取資料磁碟區。

用於 Azure 的儲存區和 Azure 上的儲存區

若要為 Azure 上的 Velero 設定儲存區,請依照適用於 Azure 存放庫的 Velero 外掛程式中的程序操作:

  1. 建立 Azure 儲存區帳戶和 Blob 容器

  2. 取得包含虛擬機器和磁碟的資源群組

  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 授與 Velero 存取 S3 值區的一種方法是,將類似如下的本機 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。

若要將 Velero 部署到充當 Tanzu Kubernetes Grid 管理叢集的 vSphere with Tanzu 主管叢集,請參閱備份和還原 vSphere with Tanzu

  1. 使用上方 Velero 安裝選項中列出的選項執行 velero install,將 Velero 伺服器安裝到 kubeconfig 中的目前預設叢集。

    • 例如,若要使用 MinIO 作為物件儲存區,請依照 Velero 說明文件中的 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"
      
    • 如需詳細資訊,請參閱 Velero Plugin for vSphere v1.5.1 存放庫中的 Vanilla Kubernetes 叢集的安裝一節。

    • 將 Velero 伺服器安裝到叢集中會在名為 velero 的叢集中建立一個命名空間,並在其中放置名為 velero 的部署。

  2. 如果未將認證檔案傳遞到上方具有 velero install--secret-file,請從備份 S3 值區設定對 Velero 的授與存取權。例如,在 AWS 上,將原則附加到 IAM 角色 nodes.tkg.cloud.vmware.com,該角色管理 Velero 等託管的應用程式,以允許存取 S3 值區。

  3. 新增 Velero Plugin for vSphere,除了儲存叢集物件外,此外掛程式還允許 Velero 使用 S3 值區來儲存工作負載資料的 CSI 磁碟區快照:

    1. 下載 Velero Plugin for vSphere 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. 使用組態檔在命名空間 velero 中建立 velero-vsphere-config-secret 密碼:

      kubectl -n velero create secret generic velero-vsphere-config-secret --from-file=csi-vsphere.conf
      
    5. 為參考密碼的 Velero 外掛程式建立 ConfigMapvelero-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-IMAGEVelero Plugin for vSphere repo v1.5.1 中列出的容器映像的登錄路徑 (例如 http://projects.registry.vmware.com/tkg/velero/velero-plugin-for-vsphere:v1.5.1_vmware.1)。

    8. 如果您建立該帳戶時尚未包含這些權限,請透過為 Tanzu Kubernetes Grid 帳戶建立的角色新增以下 VirtualMachine 權限來啟用該外掛程式:

      • 組態 (Configuration) > 切換磁碟變更追蹤 (Toggle disk change tracking)
      • 佈建 (Provisioning) > 允許唯讀磁碟存取 (Allow read-only disk access)
      • 佈建 (Provisioning) > 允許虛擬機器下載 (Allow virtual machine download)
      • 快照管理 (Snapshot management) > 建立快照 (Create snapshot)
      • 快照管理 (Snapshot management) > 移除快照 (Remove snapshot)

在 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. 針對您的基礎結構,遵循上方的將 Velero 伺服器部署到叢集指示,在工作負載叢集上部署 Velero 伺服器以及 Velero Plugin for vSphere (如果需要)。

  2. 備份叢集內容:

    velero backup create your_backup_name
    
  3. 如果 velero backup 傳回 transport is closing 錯誤,請在增加記憶體限制後重試,如 Velero 說明文件中的安裝後更新資源要求和限制中所述。

附註

不支援備份和還原 Windows 及多重作業系統工作負載叢集。

還原工作負載

若要從備份還原工作負載叢集的內容,請執行以下動作:

  1. 建立新的叢集。無法將叢集備份還原到現有叢集。

  2. 依照上方針對您的基礎結構的將 Velero 伺服器部署到叢集指示,在新叢集上部署 Velero 伺服器以及 Velero Plugin for vSphere (如果需要)。

  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