若要在 Tanzu Kubernetes 上備份和還原工作負載,請在 Kubernetes 叢集上建立資料存放區並安裝 Restic 和 Restic。

概觀

Tanzu Kubernetes 叢集在虛擬機器節點上執行。若要備份和還原 Tanzu Kubernetes 叢集,請在該叢集上安裝 Velero 和 Restic。

必要條件

確保您的環境符合下列安裝 Velero 和 Restic 的必要條件,以便備份和還原在 Tanzu Kubernetes 叢集上執行的工作負載。
  • 儲存區足夠儲存數個工作負載備份的 Linux 虛擬機器。您將在此虛擬機器上安裝 MinIO。
  • 安裝了 vSphere 適用的 Kubernetes CLI 工具 (包括 kubectl 適用的 vSphere 外掛程式kubectl) 的 Linux 虛擬機器。您將在此用戶端虛擬機器上安裝 Velero CLI。如果沒有此類虛擬機器,您可以在本機安裝 Velero CLI,但必須相應地調整安裝步驟。
  • Kubernetes 環境具有網際網路存取權,且可由用戶端虛擬機器連線。

安裝和設定 MinIO 物件存放區

Velero 需要與 S3 相容的物件存放區做為 Kubernetes 工作負載備份的目的地。Velero 支援數個此類 物件存放區提供者。為簡單起見,這些指示使用 MinIO,即一種在物件存放區虛擬機器上本機執行的與 S3 相容的儲存區服務。
  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 即服務,請下載 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

在虛擬機器用戶端或本機機器上安裝 Velero CLI。
  1. 從 VMware 產品下載頁面下載 vSphere with Tanzu 之支援版本的已簽署 Velero 二進位檔案。
    備註: 您必須使用由 VMware 簽署的 Velero 二進位檔案,才有資格獲得 VMware 的支援。
  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. 設定目標 Kubernetes 叢集的內容,以便 Velero CLI 知道要在哪個叢集上運作。
    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 叢集上執行三個網繭 Restic DaemonSet,您可能必須更新 Restic DaemonSet 規格並修改 hostPath。如需有關此問題的詳細資訊,請參閱 Velero 說明文件中的 〈Restic 整合〉
  1. 驗證三個網繭 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. 驗證三個網繭 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