了解如何安装和配置 适用于 vSphere 的 Velero 插件,以备份和还原在 vSphere Pod 和 TKG 集群上运行的工作负载。
概览
适用于 vSphere 的 Velero 插件 提供了备份和还原 vSphere IaaS Control Plane 工作负载的解决方案。在 主管 上安装并配置 适用于 vSphere 的 Velero 插件 后,可以备份和还原 TKG 集群工作负载以及 vSphere Pod。对于持久工作负载,适用于 vSphere 的 Velero 插件 可用于生成持久卷的快照。
必备条件:
- 主管 已激活。
- 已创建并配置 vSphere 命名空间。
- 您必须是 vSphere 管理员角色的成员,或者具有以下 vSphere 特权:
- SupervisorServices.Manage
- Namespaces.Manage
- Namespaces.Configure
注: 请参见“ 将 TKG Service 与 vSphere IaaS 控制平面结合使用”中的 创建专用组和角色。 - 创建可在其中运行 Velero CLI 的 Linux 虚拟机。或者使用可以访问 主管 的现有 Linux 跳转主机。
- Velero 版本号以
X.Y.Z
显示。有关要使用的特定版本,请参阅 Velero 兼容性列表,并在运行命令时相应地进行替换。
- NSX 网络连接用于支持部署 vSphere Pod。
- 已部署 Data Manager 虚拟机。
- Velero Operator 已激活并在
velero-vsphere-domain-cXX
命名空间中运行。 - 配置了名为
velero
的命名空间。 - 适用于 vSphere 的 Velero 插件 作为 vSphere Pod 在
velero
命名空间中运行。
步骤 0(可选):为备份和还原流量创建专用网络
- 标记 ESXi 主机以支持网络文件复制 (NFC)
- 使用 NSX 配置备份和还原网络。
要将 ESXi 主机配置为支持专用网络块设备 (NBD) 传输,请在运行 主管 的 vSphere 集群中的每个 ESXi 主机上添加一个 VMkernel 网卡,并在该网卡上设置 vSphereBackupNFC
。将标记 vSphereBackupNFC
应用于 VMkernel 适配器的网卡类型时,备份和还原流量将通过所选虚拟网卡。
vSphereBackupNFC
,则不会在备份和还原网络上发送备份和还原流量,即使已配置备份和还原网络。如果未启用
vSphereBackupNFC
,流量将通过 vSphere 管理网络传输。
vSphereBackupNFC
标记后,通过更新集群的现有 vSphere Distributed Switch (VDS),使用 NSX 配置备份和还原网络,如下所示:
- 在 vSphere Client 中,选择 。
- 选择集群的现有 VDS。
- 右键单击 vDS,然后选择 。
- 创建名为 BackupRestoreNetwork 的新分布式端口组。
- 将 VMkernel 适配器添加到 BackupRestoreNetwork 分布式端口组。
- 将启用了工作负载管理的 vCenter 集群中的所有 ESXi 主机连接到 BackupRestoreNetwork 分布式端口组。
- 启用
vSphereBackupNFC
标记。
步骤 1:创建与 S3 兼容的对象存储
要备份和还原持久卷,您需要提供与 S3 兼容的对象存储。Velero 支持许多对象存储提供程序。
要安装 适用于 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 插件 时将引用此文件。
[default] aws_access_key_id = ACCESS-KEY-ID-STRING aws_secret_access_key = SECRET-ACCESS-KEY-STRING
MinIO 是一个与 S3 兼容的对象存储,易于安装和使用。vSphere IaaS Control Plane 附带可以启用的 MinIO 主管服务。有关详细信息,请参考《vSphere IaaS 控制平面服务和工作负载》出版物。
或者,也可以在 Linux 虚拟机上手动安装 MinIO 服务器。有关说明,请参见在 TKG 集群上安装和配置独立 Velero 和 Restic。
步骤 2:安装并配置数据管理器
要使用 适用于 vSphere 的 Velero 插件 来简化备份和还原,您需要部署一个或多个 Data Manager 虚拟机,以将持久卷备份数据移入和移出与 S3 兼容的对象存储。备份时,Data Manager 会将卷快照数据从 vSphere 卷迁移到与 S3 兼容的远程持久存储,在还原期间,会从与 S3 兼容的远程存储迁移到 vSphere 卷。
- 使用 vSphere Client 右键单击已激活 主管 的数据中心,然后选择部署 OVF 模板。
- 从以下 URL 将 Data Manager OVA 文件下载到本地计算机:https://vmwaresaas.jfrog.io/artifactory/Velero-YAML/Velero/DataManager/1.2.0/datamgr-ob-20797900-photon-3-release-1.2.ova。
- 选择本地文件,然后将 Data Manager OVA 上载到 vCenter Server。
- 例如,命名虚拟机 DataManager。
- 选择配置了 主管 的计算资源,即 vSphere 集群。
- 查看虚拟机部署详细信息,然后单击下一步。
- 接受许可协议,然后单击下一步。
- 选择存储,然后单击下一步。
- 选择 Data Manager 虚拟机的目标网络。
- 如果配置了专用备份和还原网络,请选择 BackupRestoreNetwork。
- 如果未配置专用备份和还原网络,请选择管理网络。
- 确认选择,然后单击完成以完成流程。
- 使用“近期任务”面板监控部署进度。
注: 如果收到错误消息“OVF 描述符不可用”(OVF Descriptor is not available),请使用 Chrome 浏览器。
- 部署 Data Manager 虚拟机后,请为虚拟机配置输入参数。
- 右键单击虚拟机,然后选择 。
- 在“虚拟硬件”选项卡中,对于 CD/DVD 驱动器,从主机设备更改为客户端设备。
注: 如果不执行此操作,则无法保存所需的高级配置设置。
- 在 选项卡中,选择 。
- 为以下每个设置配置输入参数:
参数 值 guestinfo.cnsdp.vcUser
输入具有足够权限来部署虚拟机的 vCenter Server 用户名。
如果未指定具有 vSphere 管理员权限的用户,请参考 vSphere 权限文档以获取指导。或者,为工作负载管理创建专用用户。请参见“将 TKG Service 与 vSphere IaaS 控制平面结合使用”中的创建专用组和角色。
guestinfo.cnsdp.vcAddress
输入 vCenter Server IP 地址或 FQDN。 guestinfo.cnsdp.vcPasswd
输入 vCenter Server 用户密码。 guestinfo.cnsdp.vcPort
默认值为 443。请勿更改此值。 guestinfo.cnsdp.wcpControlPlaneIP
输入 主管 浮动 IP 地址。 获取此值的方法是:在“工作负载管理”中导航到 主管,然后选择 。
guestinfo.cnsdp.updateKubectl
默认值为 false。请勿更改此值。 guestinfo.cnsdp.veleroNamespace
保留默认值 velero
。稍后在 主管 上创建名为velero
的 vSphere 命名空间。这两个名称必须匹配。guestinfo.cnsdp.datamgrImage
如果未配置(未设置),则默认情况下系统将从 Docker Hub 中提取容器映像,地址为 vsphereveleroplugin/data-manager-for-plugin:1.1.0
- 单击确定以保存配置,然后再次单击确定以保存虚拟机设置。
注: 如果未将 CD/DVD 驱动器从 主机设备更改为 客户端设备,则无法保存设置。如果是这种情况,请取消该操作,更改驱动器并重复高级配置设置。
- 启用 Velero vSphere 操作者 后再打开 Data Manager 虚拟机的电源(下一部分)。
步骤 3:在 主管 上安装 Velero vSphere 操作者 服务
vSphere IaaS Control Plane 将 Velero vSphere 操作者 作为 主管服务 提供。Velero vSphere 操作者 服务与 适用于 vSphere 的 Velero 插件 协同工作,支持备份和还原 Kubernetes 工作负载,包括生成持久卷快照。有关 主管服务 的详细信息,请参见“vSphere IaaS 控制平面服务和工作负载”中的管理主管服务。
Velero vSphere 操作者 是一个核心 主管服务,这意味着服务 Operator 已预先注册到 vCenter Server。完成以下步骤,在 主管 上安装 Velero vSphere 操作者 作为服务。
- 从 vSphere Client 主菜单中,选择工作负载管理。
- 选择服务选项卡。
- 从顶部的下拉菜单中选择目标 vCenter Server。
- 在 Velero vSphere 操作者 卡视图中,选择 。
- 选择要安装服务的目标 主管,然后单击下一步。
- 单击安装以完成服务的安装。
验证 主管 上的 Velero vSphere 操作者 服务,然后启动 Data Manager 虚拟机。
- 从 vSphere Client 主菜单中,选择工作负载管理。
- 选择 。
- 确认看到 Velero vSphere 操作者 已安装,并且其状态为已配置。
- 在命名空间选项卡中,确认看到了名为
svc-velero-vsphere-domain-xxx
的新 vSphere 命名空间,其中xxx
是一个唯一的字母数字令牌。这是系统为 Velero vSphere 操作者 创建的命名空间。注: 无需配置此命名空间,也不应对其进行编辑。 - 从主机和集群中找到 Data Manager 虚拟机并打开虚拟机电源。
步骤 4:为 适用于 vSphere 的 Velero 插件 创建 vSphere 命名空间
- 将该 vSphere 命名空间 命名为 velero。
- 选择 velero 命名空间并对其进行配置。
- 为 velero 命名空间指定存储。
- 向用户授予适当的权限,使其具备编辑 velero 命名空间的权限。
步骤 5:创建 适用于 vSphere 的 Velero 插件 配置映射
velero-vsphere-plugin-config.yaml
配置映射。
apiVersion: v1 kind: ConfigMap metadata: name: velero-vsphere-plugin-config data: cluster_flavor: SUPERVISOR
kubectl apply -n <velero-namespace> -f velero-vsphere-plugin-config.yaml
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
步骤 6:安装 适用于 vSphere 的 Velero 插件
kubectl-vsphere
和
kubectl
CLI 的 Linux 跳转主机。
- 下载 适用于 vSphere 的 Velero 插件 CLI。
查看 兼容性列表,然后从此处下载目标版本: https://github.com/vmware-tanzu/velero-plugin-for-vsphere/releases。注: 在接下来的命令中,将
X.Y.Z
替换为下载的 Velero CLI 和插件的版本号。 - 将 CLI 安全复制到 Linux 跳转主机。例如:
pscp -P 22 C:\temp\velero-vsphere-X.Y.Z-linux-amd64.tar.gz [email protected]:/home/ubuntu/tanzu
- 提取
velero-vsphere
CLI 并将其设置为可写入。tar -xf velero-vsphere-X.Y.Z-linux-amd64.tar.gz chmod +x velero-vsphere
- 将 CLI 添加到您的路径。
export PATH="$(pwd)/velero-vsphere-X.Y.Z-linux-amd64:$PATH"
- 使用以下内容创建
s3-credentials
文件。aws_access_key_id = ACCESS-KEY-ID-STRING aws_secret_access_key = SECRET-ACCESS-KEY-STRING
- 获取与 S3 兼容的对象存储的区域、 URL 和桶名称。
- 使用 kubectl 的 vSphere 插件 登录 主管。
- 将上下文切换到 主管。
kubectl config use-context SUPERVISOR-CLUSTER-IP-ADDRESS
- 运行以下
velero-vsphere
CLI 命令,将 适用于 vSphere 的 Velero 插件 安装到已创建的 velero 命名空间中。导出 AWS $BUCKET 和 $REGION 的值。如果偏离上述任何说明,请同时调整这些值,例如密钥文件的名称或位置,手动创建的velero
命名空间的名称等。export BUCKET=example-velero-sv && export REGION=us-east-1 ./velero-vsphere install \ --namespace velero \ --version vX.X.X \ --provider aws \ --plugins harbor-repo.vmware.com/velero/velero-plugin-for-aws:vX.Y.Z,harbor-repo.vmware.com/velero/velero-plugin-for-vsphere:vX.Y.Z \ --bucket $BUCKET \ --secret-file ~/.aws/credentials \ --snapshot-location-config region=$REGION \ --backup-location-config region=$REGION
注: 例如,使用 适用于 vSphere 的 Velero 插件 v1.4.0,则 Velero CLI 版本为 v1.8.1。 - 验证 适用于 vSphere 的 Velero 插件 安装是否成功。
成功安装后,应该会看到以下消息:
Send the request to the operator about installing Velero in namespace velero
运行以下命令以进一步验证。应该会看到“已完成”和版本。kubectl -n velero get veleroservice default -o json | jq '.status'
预期结果:{ "enabled": true, "installphase": "Completed", "version": "v1.8.1" }
注: 以上命令假定安装了jq
实用程序,该实用程序可以对发送到终端的 JSON 输出进行格式化。如果未安装jq
,请安装该命令或移除命令的这一部分(json
后的所有内容)。 - 按需执行故障排除。
如果安装不成功,请移除安装并重试。要移除安装,请按列出的顺序完成下一节中的步骤。
附录:卸载 适用于 vSphere 的 Velero 插件
- 运行
velero-vsphere
CLI 以卸载 适用于 vSphere 的 Velero 插件。./velero-vsphere uninstall -n velero
- 验证名为
velero
的 vSphere Pod 是否已移除。kubectl get pods -n velero
如果看到容器“正在终止”,请等待其移除后再继续。
- 使用 vSphere Client,删除手动创建的名为 vSphere 命名空间 的
velero
。注: 在命名空间删除完成之前,不要继续执行下一步。可以使用 kubectl 验证velero
命名空间是否已移除(但不要使用 kubectl 移除velero
命名空间)。
附录:在气隙环境中安装 适用于 vSphere 的 Velero 插件
如果计划在气隙环境中安装 适用于 vSphere 的 Velero 插件,则必须使用自定义映像进行安装。您必须确保自定义映像的 backup-driver
和 data-manager-for-plugin
的匹配映像在预期的注册表中可用,并且可从 Kubernetes 集群中访问。在气隙环境中,自定义映像应在专用注册表中,因为 Docker Hub 中已发布的映像不可访问。
- 下载
velero-plugin-for-vsphere
、backup-driver
和data-manager-for-plugin
的已发布映像。 - 重命名映像,也就是使用匹配的
<Registry endpoint and path>
和<Version tag>
对其进行标记,然后将其上载到自定义存储库中。 - 使用自定义的
velero-plugin-for-vsphere
映像安装插件。在 vanilla 集群中安装 适用于 vSphere 的 Velero 插件 时,它会在后台部署两个附加组件:
backup-driver
部署和data-manager-for-plugin
DaemonSet。在 主管 和 Tanzu Kubernetes 集群中,仅部署backup-driver
部署。提供
velero-plugin-for-vsphere
的容器映像时,将使用映像解析机制解析匹配的backup-driver
和data-manager-for-plugin
映像。容器映像已正式使用以下模式:<Registry endpoint and path>/<Container name>:<Version tag>
提供
velero-plugin-for-vsphere
容器映像时,将解析具有匹配的<Registry endpoint and path>
和<Version tag>
的backup-driver
和data-manager-for-plugin
的相应映像。例如,请考虑以下velero-plugin-for-vsphere
容器映像:abc.io:8989/x/y/.../z/velero-plugin-for-vsphere:vX.Y.Z
应当提取以下匹配的backup-driver
和data-manager-for-plugin
映像:abc.io:8989/x/y/.../z/backup-driver:vX.Y.Z abc.io:8989/x/y/.../z/data-manager-for-plugin:vX.Y.Z
- 对安装进行故障排除。
如果在解析
backup-driver
和data-manager-for-plugin
的匹配映像时出现任何问题或错误,安装将回退到 Docker Hub 中官方velerovsphereplugin
存储库中的相应映像。以下问题会触发回退机制:- 在用户输入的自定义
velero-plugin-for-vsphere
映像中使用意外的容器名称。例如,将使用
x/y/velero-velero-plugin-for-vsphere:vX.Y.Z
。 - Velero 部署名称自定义为除
velero
以外的任何其他内容。例如,如果在部署 Velero 之前将 Velero 部署名称更新为 Veleromanifests
文件中的velero-server
,则会触发该问题。velero-plugin-for-vsphere
中的现有映像解析机制只能识别具有固定名称velero
的 Velero 部署。
- 在用户输入的自定义