若要備份和還原在主管中的 TKG 叢集上執行的工作負載,請在 Kubernetes 叢集上建立資料存放區並安裝 Velero 和 Restic。

概觀

TKG 2.2 叢集在虛擬機器節點上執行。若要備份和還原 TKG 叢集工作負載,請在叢集上安裝 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。

本說明文件中使用的版本為 適用於 Tanzu Kubernetes Grid 2.2.0 的 Velero 1.9.7
  1. VMware Customer Connect 入口網站上的 Tanzu Kubernetes Grid 產品下載頁面下載 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