通过在 TKGS 集群上安装 适用于 vSphere 的 Velero 插件,可以使用 适用于 vSphere 的 Velero 插件 备份和还原该集群上运行的工作负载。
概览
必备条件:在 主管 上安装 适用于 vSphere 的 Velero 插件
在 TKGS 集群上安装 适用于 vSphere 的 Velero 插件 要求 主管 已安装 适用于 vSphere 的 Velero 插件。此外,必须为 主管 配置 NSX 网络连接。请参见在 主管 上安装并配置 适用于 vSphere 的 Velero 插件。
存储要求
要执行 TKG 服务 集群备份,您需要一个存储后端,如下所述。如果要备份多个集群,则不应将同一存储后端用于不同的集群备份。如果共享存储后端,将同步备份对象。必须使用不同的存储后端才能避免数据丢失。
步骤 1:在 Linux Workstation 上安装 Velero CLI
Velero CLI 是与 Velero 交互的标准工具。Velero CLI 提供的功能比 适用于 vSphere 的 Velero 插件 CLI (velero-vsphere
) 多,是备份和还原 Tanzu Kubernetes 集群工作负载所必需的。
在 Linux 工作站上安装 Velero CLI。理想情况下,这是为 vSphere IaaS Control Plane 环境运行关联的 CLI 的同一跳转主机,包括 kubectl
、kubectl-vsphere
和 velero-vsphere
。
Velero 版本号以 X.Y.Z
显示。有关要使用的特定版本,请参阅 Velero 兼容性列表,并在运行命令时相应地进行替换。
- 运行以下命令:
$ 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
- 验证 Velero CLI 的安装。
velero version Client: Version: vX.Y.Z
步骤 2:获取与 S3 兼容的存储桶详细信息
为方便起见,这些步骤假定使用在 主管 上安装 适用于 vSphere 的 Velero 插件 时配置的与 S3 兼容的相同对象存储。在生产环境中,可能需要创建单独的对象存储。
数据项 | 示例值 |
---|---|
s3Url |
|
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 插件(新方法)
- 确认备份存储位置可供访问。
- 确认已激活 Velero vSphere Operator 核心 主管服务。
kubectl get ns | grep velero svc-velero-domain-c9 Active 18d
- 确认已在 主管 上创建名为
velero
的 Kubernetes 命名空间。kubectl get ns | grep velero svc-velero-domain-c9 Active 18d velero Active 1s
- 确认已在 主管 上启用 适用于 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
- 通过向集群添加 velero 标签,为目标 TKG 集群启用 Velero。
kubectl label cluster
CLUSTER-NAME
--namespaceCLUSTER-NS
velero.vsphere.vmware.com/enabled=true注: 可以在置备集群时通过 vSphere 命名空间 完成此操作。 - 确认 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 插件。
kubectl
上下文。在运行 Velero CLI 命令以在目标集群上安装 Velero 和
适用于 vSphere 的 Velero 插件 之前,请务必将
kubectl
上下文设置为目标集群。
- 使用 kubectl 的 vSphere 插件 对 主管 进行身份验证。
- 将
kubectl
上下文设置为目标 TKG 集群。kubectl config use-context TARGET-TANZU-KUBERNETES-CLUSTER
- 在 TKG 集群上,为名为
velero-vsphere-plugin-config.yaml
的 Velero 插件创建配置映射。apiVersion: v1 kind: ConfigMap metadata: name: velero-vsphere-plugin-config data: cluster_flavor: GUEST
在 TKG 集群上应用配置映射。kubectl apply -n <velero-namespace> -f velero-vsphere-plugin-config.yaml
如果未安装配置映射,则在尝试安装 适用于 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
- 运行以下 Velero CLI 命令以在目标集群上安装 Velero。
使用相应的值替换 BUCKET-NAME 、REGION(两个实例)和 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
- 在目标集群上安装 适用于 vSphere 的 Velero 插件。安装的 Velero 将与 Kubernetes API 服务器通信以安装插件。
velero plugin add vsphereveleroplugin/velero-plugin-for-vsphere:vX.Y.Z
附录:从 TKG 集群中卸载 适用于 vSphere 的 Velero 插件
- 将
kubectl
上下文设置为目标 Tanzu Kubernetes 集群。kubectl config use-context TARGET-TANZU-KUBERNETES-CLUSTER
- 要卸载插件,请运行以下命令,从 Velero 部署中移除 velero-plugin-for-vsphere 的 InitContainer。
velero plugin remove vsphereveleroplugin/velero-plugin-for-vsphere:vX.Y.Z
- 要完成该过程,请删除备份驱动程序部署和相关的 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