可以使用 適用於 vSphere 的 Velero 外掛程式 備份和還原在 TKGS 叢集上執行的工作負載,方法是在該叢集上安裝 適用於 vSphere 的 Velero 外掛程式

概觀

適用於 vSphere 的 Velero 外掛程式 提供了備份和還原 TKGS 叢集工作負載的解決方案。對於持續性工作負載, 適用於 vSphere 的 Velero 外掛程式 可讓您建立持續性磁碟區的快照。
備註: 如果想要備份和還原的 TKGS 叢集工作負載具備可攜性,請勿使用 適用於 vSphere 的 Velero 外掛程式。如需跨 Kubernetes 叢集的可攜性,請將獨立 Velero 與 Restic 搭配使用。

必要條件:在 主管 上安裝 適用於 vSphere 的 Velero 外掛程式

在 TKGS 叢集上安裝 適用於 vSphere 的 Velero 外掛程式 需要 主管 已安裝 適用於 vSphere 的 Velero 外掛程式。此外,必須為 主管 設定 NSX 網路。請參閱

步驟 1:在 Linux Workstation 上安裝 Velero CLI

Velero CLI 是與 Velero 連接的標準工具。Velero CLI 比 適用於 vSphere 的 Velero 外掛程式 CLI (velero-vsphere) 提供更多的功能,並且對於備份和還原 Tanzu Kubernetes 叢集工作負載是必要的。

在 Linux Workstation 上安裝 Velero CLI。理想情況下,這也是針對 vSphere IaaS control plane 環境執行相關聯 CLI 的同一跳轉主機,包括 kubectlkubectl-vspherevelero-vsphere

Velero 版本號碼顯示為 X.Y.Z。請參閱 Velero 相容性對照表以確定要使用的特定版本,並在執行命令時相應地進行替代。

完成下列步驟以安裝 Velero CLI。
  1. 執行下列命令:
    $ wget https://github.com/vmware-tanzu/velero/releases/download/vX.Y.Z/velero-vX.Y.Z-linux-amd64.tar.gz
    $ gzip -d velero-vX.Y.Z-linux-amd64.tar.gz && tar -xvf velero-vX.Y.Z-linux-amd64.tar
    $ export PATH="$(pwd)/velero-vX.Y.Z-linux-amd64:$PATH"
     
    $ which velero
    /root/velero-vX.Y.Z-linux-amd64/velero
  2. 確認已安裝 Velero CLI。
    velero version
    
    Client:
        Version: vX.Y.Z

步驟 2:取得與 S3 相容的值區詳細資料

為了方便起見,這些步驟假設您使用的是在 主管 上安裝 適用於 vSphere 的 Velero 外掛程式 時所設定的 S3 相容物件存放區。在生產期間,您可能想要建立單獨的物件存放區。

若要安裝 適用於 vSphere 的 Velero 外掛程式,您需要提供以下關於 S3 相容物件存放區的資訊。
資料項目 範例值
s3Url

http://my-s3-store.example.com

aws_access_key_id ACCESS-KEY-ID-STRING
aws_secret_access_key SECRET-ACCESS-KEY-STRING
使用下列資訊建立密碼檔案名稱 s3-credentials。安裝 適用於 vSphere 的 Velero 外掛程式 時,將參考此檔案。
aws_access_key_id = ACCESS-KEY-ID-STRING
aws_secret_access_key = SECRET-ACCESS-KEY-STRING

步驟 3 選項 A:使用標籤在 TKG 叢集上安裝 適用於 vSphere 的 Velero 外掛程式 (新方法)

如果使用的是 vSphere 8 Update 3 或更新版本,則可以透過新增標籤在 TKG 叢集中自動安裝 適用於 vSphere 的 Velero 外掛程式
  1. 確認備份儲存位置可供存取。
  2. 確認已啟用 Velero vSphere Operator 核心 主管服務
    kubectl get ns | grep velero
    svc-velero-domain-c9                        Active   18d
  3. 確認已在 主管 上建立名為 velero 的 Kubernetes 命名空間。
    kubectl get ns | grep velero
    svc-velero-domain-c9                        Active   18d
    velero                                      Active   1s
  4. 確認已在 主管 上啟用 適用於 vSphere 的 Velero 外掛程式 主管服務
    velero version
    Client:
            Version: v1.11.1
            Git commit: bdbe7eb242b0f64d5b04a7fea86d1edbb3a3587c
    Server:
            Version: v1.11.1
    kubectl get veleroservice -A
    NAMESPACE   NAME      AGE
    velero      default   53m
    velero backup-location get
    NAME      PROVIDER   BUCKET/PREFIX   PHASE       LAST VALIDATED                  ACCESS MODE   DEFAULT
    default   aws        velero          Available   2023-11-20 14:10:57 -0800 PST   ReadWrite     true
  5. 透過向叢集新增 velero 標籤,為目標 TKG 叢集啟用 Velero。
    kubectl label cluster CLUSTER-NAME --namespace CLUSTER-NS velero.vsphere.vmware.com/enabled=true
    備註: 可以在佈建叢集時透過 vSphere 命名空間 完成此作業。
  6. 確認 Velero 已安裝並準備好用於叢集。
    kubectl get ns
    NAME                                 STATUS   AGE
    ...
    velero                               Active   2m    <--
    velero-vsphere-plugin-backupdriver   Active   2d23h
    kubectl get all -n velero
    NAME                                 READY   STATUS    RESTARTS   AGE
    pod/backup-driver-5945d6bcd4-gtw9d   1/1     Running   0          17h
    pod/velero-6b9b49449-pq6b4           1/1     Running   0          18h
    NAME                            READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/backup-driver   1/1     1            1           17h
    deployment.apps/velero          1/1     1            1           18h
    NAME                                       DESIRED   CURRENT   READY   AGE
    replicaset.apps/backup-driver-5945d6bcd4   1         1         1       17h
    replicaset.apps/velero-6b9b49449           1         1         1       18h
    velero version
    Client:
            Version: v1.11.1
            Git commit: bdbe7eb242b0f64d5b04a7fea86d1edbb3a3587c
    Server:
            Version: v1.11.1

步驟 3 選項 B:在 TKG 叢集上手動安裝 適用於 vSphere 的 Velero 外掛程式 (舊方法)

您將使用 Velero CLI 在要備份和還原的目標 TKG 叢集上安裝 適用於 vSphere 的 Velero 外掛程式

Velero CLI 內容將自動遵循 kubectl 內容。執行 Velero CLI 命令在目標叢集上安裝 Velero 和 適用於 vSphere 的 Velero 外掛程式 之前,請務必將 kubectl 內容設定為目標叢集。
  1. 使用 kubectl 適用的 vSphere 外掛程式主管 進行驗證。
  2. kubectl 內容設定為目標 TKG 叢集。
    kubectl config use-context TARGET-TANZU-KUBERNETES-CLUSTER
  3. 在 TKG 叢集上,為名為 velero-vsphere-plugin-config.yaml 的 Velero 外掛程式建立 Configmap。
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: velero-vsphere-plugin-config
    data:
      cluster_flavor: GUEST
    在 TKG 叢集上套用該 Configmap。
    kubectl apply -n <velero-namespace> -f velero-vsphere-plugin-config.yaml
    如果未安裝 Configmap,則在嘗試安裝 適用於 vSphere 的 Velero 外掛程式 時,您會遇到以下錯誤。
    Error received while retrieving cluster flavor from config, err: configmaps "velero-vsphere-plugin-config" not found
    Falling back to retrieving cluster flavor from vSphere CSI Driver Deployment
  4. 執行下列 Velero CLI 命令,以在目標叢集上安裝 Velero。

    BUCKET-NAMEREGION (兩個執行個體) 和 s3Url 欄位的預留位置值取代為適當的值。如果您未遵循上述任何指示,請同時調整這些值,例如密碼檔案的名稱或位置、手動建立的 velero 命名空間的名稱等。

    ./velero install --provider aws \
    --bucket BUCKET-NAME \
    --secret-file ./s3-credentials \
    --features=EnableVSphereItemActionPlugin \
    --plugins velero/velero-plugin-for-aws:vX.Y.Z \
    --snapshot-location-config region=REGION \
    --backup-location-config region=REGION,s3ForcePathStyle="true",s3Url=http://my-s3-store.example.com
  5. 在目標叢集上安裝 適用於 vSphere 的 Velero 外掛程式。已安裝的 Velero 將與 Kubernetes API 伺服器進行通訊,以安裝外掛程式。
    velero plugin add vsphereveleroplugin/velero-plugin-for-vsphere:vX.Y.Z

附錄:從 TKG 叢集中解除安裝 適用於 vSphere 的 Velero 外掛程式

完成下列步驟以解除安裝 適用於 vSphere 的 Velero 外掛程式
  1. kubectl 內容設定為目標 Tanzu Kubernetes 叢集。
    kubectl config use-context TARGET-TANZU-KUBERNETES-CLUSTER
  2. 若要解除安裝外掛程式,請執行下列命令,以從 Velero 部署中移除 velero-plugin-for-vsphere 的 InitContainer。
    velero plugin remove vsphereveleroplugin/velero-plugin-for-vsphere:vX.Y.Z
  3. 若要完成該程序,請刪除備份驅動程式部署及相關 CRD。
    kubectl -n velero delete deployment.apps/backup-driver
    kubectl delete crds \
    backuprepositories.backupdriver.cnsdp.vmware.com \
    backuprepositoryclaims.backupdriver.cnsdp.vmware.com \
    clonefromsnapshots.backupdriver.cnsdp.vmware.com \
    deletesnapshots.backupdriver.cnsdp.vmware.com \
    snapshots.backupdriver.cnsdp.vmware.com
    kubectl delete crds uploads.datamover.cnsdp.vmware.com downloads.datamover.cnsdp.vmware.com