本主題說明如何針對具有獨立管理叢集的 TKG,備份及還原其託管於 Tanzu Kubernetes Grid (TKG) 工作負載叢集上的工作負載和動態儲存磁碟區。
若要備份和還原叢集基礎結構、獨立管理叢集和工作負載叢集物件本身,請參閱備份和還原管理叢集和工作負載叢集的基礎結構。
若要備份和還原 vSphere with Tanzu 叢集 (包括主管叢集及其建立的工作負載叢集),請參閱 VMware vSphere 8.0 說明文件中的備份和還原 vSphere with Tanzu。
您可以使用 Velero (一種開放原始碼社群標準工具),來備份和還原 TKG 獨立管理叢集基礎結構和工作負載。
Velero 支援各種儲存區提供者以儲存其備份。Velero 還支援:
Tanzu Kubernetes Grid 訂閱包括對 VMware 測試的、相容的 Velero 發行版的支援,可從 Tanzu Kubernetes Grid 下載頁面取得。
若要備份和還原 TKG 叢集,您需要:
完成上述必備條件後,還可以使用 Velero 在叢集之間遷移工作負載。有關說明,請參見 Velero 文件中的叢集遷移和資源篩選。
注意如果已安裝 Velero CLI v1.8.1 或更早版本 (隨早期版本的 TKG 一起發行),則需要升級到 v1.9.7。較舊的 Velero 版本不能與 v1.9 及更新版本中使用的 CRD 一起使用。
若要安裝 Velero CLI v1.9.7,請執行以下動作:
.gz
檔案。其檔案名稱以 velero-linux-
、velero-mac-
或 velero-windows64-
開頭。使用 gunzip
命令或您選擇的解壓縮工具解壓縮二進位檔:
gzip -d <RELEASE-TARBALL-NAME>.gz
將適用於您的平台的 CLI 二進位檔重新命名為 velero
,確保它是可執行的,然後將其新增至 PATH
。
macOS 和 Linux 平台:
/usr/local/bin
資料夾並將其重新命名為 velero
。chmod +x /usr/local/bin/velero
Windows 平台:
Program Files\velero
資料夾並將二進位檔案複製到其中。velero.exe
。velero
資料夾上按一下滑鼠右鍵,選取內容 (Properties) > 安全性 (Security),並確定您的使用者帳戶具有完全控制 (Full Control) 權限。env
。Path
資料列,然後按一下編輯 (Edit)。velero
二進位檔的路徑。若要備份 Tanzu Kubernetes Grid 工作負載叢集內容,您需要以下儲存區位置:
請參閱 Velero 說明文件中的備份儲存區位置和磁碟區快照位置。Velero 支援各種儲存區提供者,這些提供者可以是:
VMware 建議將唯一的儲存區值區專用於每個叢集。
若要設定 MinIO,請執行以下動作:
執行設有 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
將認證儲存到本機檔案,以傳遞給 velero install
的 --secret-file
選項,例如:
[default]
aws_access_key_id=minio
aws_secret_access_key=minio123
在 vSphere 上,叢集物件儲存區備份和磁碟區快照將儲存到同一儲存區位置。此位置必須是 Amazon Web Services (AWS) 或 S3 提供者 (如 MinIO) 上與 S3 相容的外部儲存區。
若要為 vSphere 上的 Velero 設定儲存區,請參閱適用於 v1.4.3 外掛程式的 Vanilla Kubernetes 叢集中的 Velero Plugin for vSphere。
若要為 AWS 上的 Velero 設定儲存區,請依照適用於 AWS 存放庫的 Velero 外掛程式中的程序操作:
視需要為每個外掛程式設定 S3 儲存區。物件儲存外掛程式會儲存和擷取叢集物件備份,而磁碟區快照程式則會儲存和擷取資料磁碟區。
若要為 Azure 上的 Velero 設定儲存區,請依照適用於 Azure 存放庫的 Velero 外掛程式中的程序操作:
視需要為每個外掛程式設定 S3 儲存區。物件儲存外掛程式會儲存和擷取叢集物件備份,而磁碟區快照程式則會儲存和擷取資料磁碟區。
若要將 Velero 伺服器部署到工作負載叢集,請執行 velero install
命令。此命令會在叢集上建立一個名為 velero
的命名空間,並在其中放置一個名為 velero
的部署。
如果您的叢集安裝了 Velero v1.8.1 或更早版本,請執行以下動作來更新其 CRD,以與 Velero v1.9.7 CLI 搭配運作:
升級 CRD:
velero install --crds-only --dry-run -o yaml | kubectl apply -f -
更新 Velero 映像位置:
kubectl -n velero set image deployment velero velero=projects.registry.vmware.com/tkg/velero/velero:v1.9.7_vmware.1
根據所安裝的外掛程式,執行以下一或多個命令更新 Velero 外掛程式映像位置:
kubectl -n velero set image deployment velero velero-plugin-for-csi=projects.registry.vmware.com/tkg/velero/velero-plugin-for-csi:v0.3.5_vmware.1
kubectl -n velero set image deployment velero velero-plugin-for-aws=projects.registry.vmware.com/tkg/velero/velero-plugin-for-aws:v1.5.5_vmware.1
kubectl -n velero set image deployment velero velero-plugin-for-microsoft-azure=projects.registry.vmware.com/tkg/velero/velero-plugin-for-microsoft-azure:v1.5.5_vmware.1
kubectl -n velero set image deployment velero velero-plugin-for-vsphere=projects.registry.vmware.com/tkg/velero/velero-plugin-for-vsphere:v1.4.3_vmware.1
更新 Restic DaemonSet 映像位置:
kubectl -n velero set image DaemonSet restic restic=projects.registry.vmware.com/tkg/velero/velero:v1.9.7_vmware.1
若要安裝 Velero,請執行具有下列選項的 velero install
:
--provider $PROVIDER
:例如,aws
--plugins projects.registry.vmware.com/tkg/velero/velero-plugin-for-aws:v1.5.5_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。
若要將 Velero 部署到充當 Tanzu Kubernetes Grid 管理叢集的 vSphere with Tanzu 主管叢集,請參閱備份和還原 vSphere with Tanzu。
如果叢集已從 TKG v1.6.x 或更早版本安裝 Velero,請遵循從之前的 Velero 版本更新 CRD 中的步驟。
使用上方 Velero 安裝選項中列出的選項執行 velero install
,將 Velero 伺服器安裝到 kubeconfig
中的目前預設叢集。
例如,若要使用 MinIO 作為物件儲存區,請依照 Velero 說明文件中的 MinIO 伺服器設定指示進行操作:
velero install --provider aws --plugins "projects.registry.vmware.com/tkg/velero/velero-plugin-for-aws:v1.5.5_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.4.0 存放庫中的 Vanilla Kubernetes 叢集的安裝一節。
將 Velero 伺服器安裝到叢集中會在名為 velero
的叢集中建立一個命名空間,並在其中放置名為 velero
的部署。
如果未將認證檔案傳遞到上方具有 velero install
的 --secret-file
,請從備份 S3 值區設定對 Velero 的授與存取權。例如,在 AWS 上,將原則附加到 IAM 角色 nodes.tkg.cloud.vmware.com
,該角色管理 Velero 等託管的應用程式,以允許存取 S3 值區。
新增 Velero Plugin for vSphere,除了儲存叢集物件外,此外掛程式還允許 Velero 使用 S3 值區來儲存工作負載資料的 CSI 磁碟區快照:
擷取 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
(選用) 檢查並確認密碼組態檔 csi-vsphere.conf
中的 vCenter IP 位址、使用者名稱和密碼值,如下所示:
cluster-id = "CLUSTER-ID"
[VirtualCenter "VCENTER-IP"]
user = "USERNAME"
password = "PASSWORD"
port = "443"
使用組態檔在命名空間 velero
中建立 velero-vsphere-config-secret
密碼:
kubectl -n velero create secret generic velero-vsphere-config-secret --from-file=csi-vsphere.conf
為參考密碼的 Velero 外掛程式建立 ConfigMap
檔 velero-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
套用 ConfigMap
:
kubectl -n velero apply -f velero-plugin.conf
新增外掛程式:
velero plugin add PLUGIN-IMAGE
其中,PLUGIN-IMAGE
是 Velero Plugin for vSphere repo v1.4.3 中列出的容器映像的登錄路徑 (例如 http://projects.registry.vmware.com/tkg/velero/velero-plugin-for-vsphere:v1.4.3_vmware.1
)。
如果您建立該帳戶時尚未包含這些權限,請透過為 Tanzu Kubernetes Grid 帳戶建立的角色新增以下 VirtualMachine 權限來啟用該外掛程式:
若要在 AWS 上的工作負載叢集上安裝 Velero,請依照適用於 AWS 存放庫的 Velero 外掛程式中的安裝並啟動 Velero 程序進行操作。
如果叢集已從 TKG v1.6.x 或更早版本安裝 Velero,請遵循從之前的 Velero 版本更新 CRD 中的步驟。
使用上方 Velero 安裝選項中列出的選項執行 velero install
。
若要在 Azure 上的工作負載叢集上安裝 Velero,請依照適用於 Azure 存放庫的 Velero 外掛程式中的安裝並啟動 Velero 程序進行操作。
如果叢集已從 TKG v1.6.x 或更早版本安裝 Velero,請遵循從之前的 Velero 版本更新 CRD 中的步驟。
使用上方 Velero 安裝選項中列出的選項執行 velero install
。
使用 Velero,針對整個叢集或特定命名空間,備份及還原其工作負載叢集的目前工作負載和持續性磁碟區狀態。
若要備份工作負載叢集的內容,請執行以下動作:
針對您的基礎結構,遵循上方的將 Velero 伺服器部署到叢集指示,在工作負載叢集上部署 Velero 伺服器以及 Velero Plugin for vSphere (如果需要)。
備份叢集內容:
velero backup create your_backup_name
如果 velero backup
傳回 transport is closing
錯誤,請在增加記憶體限制後重試,如 Velero 說明文件中的安裝後更新資源要求和限制中所述。
附註不支援備份和還原 Windows 及多重作業系統工作負載叢集。
若要從備份還原工作負載叢集的內容,請執行以下動作:
建立新的叢集。無法將叢集備份還原到現有叢集。
依照上方針對您的基礎結構的將 Velero 伺服器部署到叢集指示,在新叢集上部署 Velero 伺服器以及 Velero Plugin for vSphere (如果需要)。
還原叢集內容:
velero backup get
velero restore create your_restore_name --from-backup your_backup_name