在 主管.上安装 适用于 vSphere 的 Velero 插件 后,可以使用 适用于 vSphere 的 Velero 插件 备份和还原 vSphere Pod 上运行的工作负载。
概览
适用于 vSphere 的 Velero 插件 提供了备份和还原 vSphere with Tanzu 工作负载的解决方案。解决方案需要安装和配置多个组件。在主管上安装并配置 适用于 vSphere 的 Velero 插件 后,可以备份和还原 TKG 集群工作负载。对于持久工作负载,适用于 vSphere 的 Velero 插件 可用于生成持久卷的快照。
必备条件:必需
- 主管已启用 NSX-T Data Center 网络连接。
注: Velero vSphere Operator 作为 vSphere Pod 运行,因此需要 NSX-T 网络连接。
- 主管 为 1.21.1 或更高版本。
- 已创建并配置 vSphere 命名空间。
- 您必须是 vSphere 管理员角色的成员,或者具有以下 vSphere 特权:
- SupervisorServices.Manage
- Namespaces.Manage
- Namespaces.Configure
- 创建可在其中运行 Velero CLI 的 Linux 虚拟机。或者使用可以访问主管的现有 Linux 跳转主机。
- NSX-T 网络连接用于支持部署 vSphere Pod
- 已部署 Data Manager 虚拟机
- Velero 运算符已启用并在
velero-vsphere-domain-cXX
命名空间中运行 - 配置了名为
velero
的命名空间 - 适用于 vSphere 的 Velero 插件 作为 vSphere Pod 在
velero
命名空间中运行
步骤 0(可选):为备份和还原流量创建专用网络
- 标记 ESXi 主机以支持网络文件复制 (NFC)
- 使用 NSX-T Data Center 配置备份和还原网络
要将 vSphere ESXi 主机配置为支持专用网络块设备 (NBD) 传输,请在启用了工作负载管理的 vCenter Server 集群中的每个 ESXi 主机上添加一个 VMkernel 网卡,并在该网卡上设置 vSphereBackupNFC
。将标记 vSphereBackupNFC
应用于 VMkernel 适配器的网卡类型时,备份和还原流量将通过所选虚拟网卡。
vSphereBackupNFC
,则不会在备份和还原网络上发送备份和还原流量,即使已配置备份和还原网络。如果未启用
vSphereBackupNFC
,流量将通过 vSphere 管理网络传输。
vSphereBackupNFC
标记后,通过更新集群的现有 vSphere Distributed Switch (vDS),使用 NSX-T 配置备份和还原网络,如下所示:
- 在 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 with Tanzu 附带可以启用的 MinIO 主管服务。有关详细信息,请参阅出版物 vSphere with Tanzu 服务和工作负载。
或者,也可以在 Linux 虚拟机上手动安装 MinIO 服务器。有关说明,请参见在 主管 中的 TKG 2 集群上安装和配置独立 Velero 和 Restic。
步骤 2:安装并配置数据管理器
为了便于使用 适用于 vSphere 的 Velero 插件 进行备份和还原,需要部署一个或多个 Data Manager 虚拟机,以将持久卷备份数据移入和移出与 S3 兼容的对象存储。备份时,Data Manager 会将卷快照数据从 vSphere 卷迁移到与 S3 兼容的远程持久存储,在还原期间,会从与 S3 兼容的远程存储迁移到 vSphere 卷。
- 下载 Data Manager OVA:
- 使用 vSphere Client 右键单击已启用工作负载管理的数据中心,然后选择部署 OVF 模板。
- 选择已下载的 Data Manager OVA 文件,并将其上载到 vCenter Server。
- 例如,命名虚拟机 DataManager。
- 选择配置了主管的计算资源,即 vCenter 集群。
- 查看虚拟机部署详细信息,然后单击下一步。
- 接受许可协议,然后单击下一步。
- 选择存储,然后单击下一步。
- 选择 Data Manager 虚拟机的目标网络。
- 如果配置了专用备份和还原网络,请选择 BackupRestoreNetwork。
- 如果未配置专用备份和还原网络,请选择管理网络。
- 确认选择,然后单击完成以完成流程。
- 使用“近期任务”面板监控部署进度。
注: 如果收到错误消息“OVF 描述符不可用”(OVF Descriptor is not available),请使用 Chrome 浏览器。
- 部署 Data Manager 虚拟机后,请为虚拟机配置输入参数。
- 右键单击虚拟机,然后选择 。
- 在“虚拟硬件”选项卡中,对于 CD/DVD 驱动器,从主机设备更改为客户端设备。
注: 如果不执行此操作,则无法保存所需的高级配置设置。
- 在 选项卡中,选择 。
- 为以下每个设置配置输入参数:
参数 值 guestinfo.cnsdp.vcUser
输入具有足够权限来部署虚拟机的 vCenter Server 用户名。 guestinfo.cnsdp.vcAddress
输入 vCenter Server IP 地址或 FQDN。 guestinfo.cnsdp.vcPasswd
输入 vCenter Server 用户密码。 guestinfo.cnsdp.vcPort
默认值为 443。请勿更改此值。 guestinfo.cnsdp.wcpControlPlaneIP
输入主管集群 IP 地址。 获取此值的方法是:导航到启用了工作负载管理的 vCenter 集群,然后选择
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 with Tanzu 提供 Velero vSphere 操作者 作为 vSphere 服务。Velero vSphere 操作者 服务与 适用于 vSphere 的 Velero 插件 协同工作,支持备份和还原 Kubernetes 工作负载,包括生成持久卷快照。有关主管服务的详细信息,请参阅出版物 vSphere with Tanzu 服务和工作负载。
完成以下操作,在启用了工作负载管理的 vCenter Server 中注册 Velero vSphere Operator 规范,并在主管上作为服务安装 Velero vSphere Operator。
- 从以下位置下载 Velero vSphere Operator 的 YAML:
http://vmware.com/go/supervisor-service
服务规范文件名为 velero-supervisorservice-1.0.0.yaml。
- 从 vSphere Client 主菜单中,选择工作负载管理。
- 选择主管服务选项卡。
- 从顶部的下拉菜单中选择目标 vCenter Server。
- 将下载的服务规范文件
velero-supervisorservice-1.0.0.yaml
拖放到添加新服务卡视图中。或者,也可以单击添加,然后浏览查找并选择文件 velero-supervisorservice-1.0.0.yaml。
- 单击下一步并接受许可协议。
- 单击完成。
Velero vSphere Operator 将在 vCenter Server 中注册。确认服务处于活动状态。如果服务已取消激活,则无法安装该服务。
- 在服务选项卡中找到 Velero vSphere Operator 规范。
- 单击
- 选择要安装该服务的目标 主管。
注: 如果看不到您的 主管,请确认您使用的是 NSX-T 网络连接。
- 配置 Velero vSphere Operator 服务安装,如下所示:
- 从下拉列表中选择版本:1.1.0。
- 请勿指定存储库端点。
- 请勿输入用户名或密码。
- 单击下一步。
- 单击安装以完成服务的安装。
验证 主管 上的 Velero vSphere Operator 服务,然后启动 Data Manager 虚拟机。
- 从 vSphere Client 主菜单中,选择清单。
- 选择启用了工作负载管理的 vCenter 集群。
- 选择 。
- 确认看到 Velero vSphere Operator 已安装,并且其状态为已配置。
- 在命名空间资源池中,确认看到了名为
svc-velero-vsphere-domain-xxx
的新命名空间,其中xxx
是唯一字母数字令牌。这是系统为 Velero vSphere Operator 创建的命名空间。注: 无需配置此命名空间,也不应对其进行编辑。 - 在主机和集群视图中,选择 Data Manager 虚拟机。
- 右键单击 Data Manager 虚拟机,然后打开其电源。
步骤 4:为 适用于 vSphere 的 Velero 插件 创建 vSphere 命名空间
- 将命名空间命名 velero。
- 选择 velero 命名空间并对其进行配置。
- 为 velero 命名空间指定存储。
- 向用户授予适当的权限,使其具备编辑 velero 命名空间的权限。
步骤 5:创建 Velero 插件配置映射
velero-vsphere-plugin-config.yaml
的 Velero 插件创建配置映射
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:
- 将 CLI 安全复制到 Linux 跳转主机。例如:
pscp -P 22 C:\temp\velero-vsphere-1.1.0-linux-amd64.tar.gz ubuntu@10.117.29.131:/home/ubuntu/tanzu
- 提取
velero-vsphere
CLI 并将其设置为可写入。tar -xf velero-vsphere-1.1.0-linux-amd64.tar.gz chmod +x velero-vsphere
- 使用以下内容创建
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 命名空间中。使用相应的值替换 BUCKET-NAME 、REGION(两个实例)和 s3Url 字段的占位符值。如果偏离上述任何说明,请同时调整这些值,例如密钥文件的名称或位置,手动创建的
velero
命名空间的名称等。./velero-vsphere install \ --namespace velero \ --image velero/velero:v1.5.1 \ --provider aws \ --plugins velero/velero-plugin-for-aws:v1.1.0,vsphereveleroplugin/velero-plugin-for-vsphere:1.1.0 \ --bucket BUCKET-NAME \ --secret-file s3-credentials \ --snapshot-location-config region=REGION \ --backup-location-config region=REGION,s3ForcePathStyle="true",s3Url=http://my-s3-store.example.com
注: 您可以在 主管 上使用 适用于 vSphere 的 Velero 插件 v1.1.0 及更高版本,例如vsphereveleroplugin/velero-plugin-for-vsphere:v1.1.1
或vsphereveleroplugin/velero-plugin-for-vsphere:v1.2.0
。Velero 版本必须为 v1.5.1 (velero/velero:v1.5.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.5.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 Client,从 主管 卸载 Velero vSphere Operator。
- 选择启用了工作负载管理的 vCenter 集群。
- 选择 。
- 选择 Velero vSphere Operator。
- 单击卸载。
此操作将从 主管 卸载 Velero vSphere Operator。运算符仍可在 页面重新安装。要完全移除该服务,请选择 。
附录:在气隙环境中安装 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:v1.1.1
。 - Velero 部署名称自定义为除
velero
以外的任何其他内容。例如,如果在部署 Velero 之前将 Velero 部署名称更新为 Veleromanifests
文件中的velero-server
,则会触发该问题。velero-plugin-for-vsphere
中的现有映像解析机制只能识别具有固定名称velero
的 Velero 部署。
- 在用户输入的自定义