了解如何安装和配置 适用于 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 兼容性列表,并在运行命令时相应地进行替换。
屏幕截图显示了 适用于 vSphere 的 Velero 插件 安装的结束状态。
  • NSX 网络连接用于支持部署 vSphere Pod
  • 已部署 Data Manager 虚拟机。
  • Velero Operator 已激活并在 velero-vsphere-domain-cXX 命名空间中运行。
  • 配置了名为 velero 的命名空间。
  • 适用于 vSphere 的 Velero 插件 作为 vSphere Podvelero 命名空间中运行。

此屏幕截图显示了 vSphere Client 中的 Velero 插件。

步骤 0(可选):为备份和还原流量创建专用网络

尽管不是必需的,但建议在生产环境中将备份和还原流量与 vSphere IaaS Control Plane 管理网络流量分开。这有两个方面:
  • 标记 ESXi 主机以支持网络文件复制 (NFC)
  • 使用 NSX 配置备份和还原网络。

要将 ESXi 主机配置为支持专用网络块设备 (NBD) 传输,请在运行 主管 的 vSphere 集群中的每个 ESXi 主机上添加一个 VMkernel 网卡,并在该网卡上设置 vSphereBackupNFC。将标记 vSphereBackupNFC 应用于 VMkernel 适配器的网卡类型时,备份和还原流量将通过所选虚拟网卡。

要执行此配置,请使用虚拟磁盘开发工具包。请参阅 NBD 文档
注: 如果未在 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:安装并配置数据管理器

警告: Data Manager 仅经过功能测试,它不适用于大规模工作,也不保证能够满足任何性能预期。它不适用于备份生产环境中的关键业务应用程序。

要使用 适用于 vSphere 的 Velero 插件 来简化备份和还原,您需要部署一个或多个 Data Manager 虚拟机,以将持久卷备份数据移入和移出与 S3 兼容的对象存储。备份时,Data Manager 会将卷快照数据从 vSphere 卷迁移到与 S3 兼容的远程持久存储,在还原期间,会从与 S3 兼容的远程存储迁移到 vSphere 卷。

vSphere IaaS Control Plane 环境中,将 Data Manager 安装为虚拟机。
注: 启用 Velero vSphere 操作者 后,再打开 Data Manager 虚拟机的电源。
  1. 使用 vSphere Client 右键单击已激活 主管 的数据中心,然后选择部署 OVF 模板
  2. 从以下 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
  3. 选择本地文件,然后将 Data Manager OVA 上载到 vCenter Server
  4. 例如,命名虚拟机 DataManager
  5. 选择配置了 主管 的计算资源,即 vSphere 集群。
  6. 查看虚拟机部署详细信息,然后单击下一步
  7. 接受许可协议,然后单击下一步
  8. 选择存储,然后单击下一步
  9. 选择 Data Manager 虚拟机的目标网络。
    • 如果配置了专用备份和还原网络,请选择 BackupRestoreNetwork
    • 如果未配置专用备份和还原网络,请选择管理网络
  10. 确认选择,然后单击完成以完成流程。
  11. 使用“近期任务”面板监控部署进度。
    注: 如果收到错误消息“OVF 描述符不可用”(OVF Descriptor is not available),请使用 Chrome 浏览器。
  12. 部署 Data Manager 虚拟机后,请为虚拟机配置输入参数。
  13. 右键单击虚拟机,然后选择编辑设置
  14. 在“虚拟硬件”选项卡中,对于 CD/DVD 驱动器,从主机设备更改为客户端设备
    注: 如果不执行此操作,则无法保存所需的高级配置设置。
  15. 编辑设置 > 高级参数选项卡中,选择高级 > 编辑配置参数
  16. 为以下每个设置配置输入参数:
    参数
    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 地址。

    获取此值的方法是:在“工作负载管理”中导航到 主管,然后选择配置 > 网络 > 管理网络 > 浮动 IP

    guestinfo.cnsdp.updateKubectl 默认值为 false。请勿更改此值。
    guestinfo.cnsdp.veleroNamespace 保留默认值 velero。稍后在 主管 上创建名为 velerovSphere 命名空间。这两个名称必须匹配。
    guestinfo.cnsdp.datamgrImage 如果未配置(未设置),则默认情况下系统将从 Docker Hub 中提取容器映像,地址为 vsphereveleroplugin/data-manager-for-plugin:1.1.0
  17. 单击确定以保存配置,然后再次单击确定以保存虚拟机设置。
    注: 如果未将 CD/DVD 驱动器从 主机设备更改为 客户端设备,则无法保存设置。如果是这种情况,请取消该操作,更改驱动器并重复高级配置设置。
  18. 启用 Velero vSphere 操作者 后再打开 Data Manager 虚拟机的电源(下一部分)。

步骤 3:在 主管 上安装 Velero vSphere 操作者 服务

vSphere IaaS Control PlaneVelero vSphere 操作者 作为 主管服务 提供。Velero vSphere 操作者 服务与 适用于 vSphere 的 Velero 插件 协同工作,支持备份和还原 Kubernetes 工作负载,包括生成持久卷快照。有关 主管服务 的详细信息,请参见“vSphere IaaS 控制平面服务和工作负载”中的管理主管服务

Velero vSphere 操作者 是一个核心 主管服务,这意味着服务 Operator 已预先注册到 vCenter Server。完成以下步骤,在 主管 上安装 Velero vSphere 操作者 作为服务。

  1. vSphere Client 主菜单中,选择工作负载管理
  2. 选择服务选项卡。
  3. 从顶部的下拉菜单中选择目标 vCenter Server
  4. Velero vSphere 操作者 卡视图中,选择操作 > 管理服务此屏幕截图显示了“服务”选项卡上的“操作”菜单选项。
  5. 选择要安装服务的目标 主管,然后单击下一步
  6. 单击安装以完成服务的安装。

验证 主管 上的 Velero vSphere 操作者 服务,然后启动 Data Manager 虚拟机。

  1. vSphere Client 主菜单中,选择工作负载管理
  2. 选择服务
  3. 确认看到 Velero vSphere 操作者 已安装,并且其状态为已配置
  4. 命名空间选项卡中,确认看到了名为 svc-velero-vsphere-domain-xxx 的新 vSphere 命名空间,其中 xxx 是一个唯一的字母数字令牌。这是系统为 Velero vSphere 操作者 创建的命名空间。
    注: 无需配置此命名空间,也不应对其进行编辑。
  5. 主机和集群中找到 Data Manager 虚拟机并打开虚拟机电源。

步骤 4:为 适用于 vSphere 的 Velero 插件 创建 vSphere 命名空间

使用 vSphere Client,在 主管 上手动创建 vSphere 命名空间适用于 vSphere 的 Velero 插件 需要此 vSphere 命名空间
  • 将该 vSphere 命名空间 命名为 velero
  • 选择 velero 命名空间并对其进行配置。
  • velero 命名空间指定存储。
  • 向用户授予适当的权限,使其具备编辑 velero 命名空间的权限。

步骤 5:创建 适用于 vSphere 的 Velero 插件 配置映射

适用于 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
如果未安装配置映射,则在尝试安装 适用于 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

步骤 6:安装 适用于 vSphere 的 Velero 插件

现在,已准备好安装 适用于 vSphere 的 Velero 插件。为此,请下载并运行 velero-vsphere CLI。
注: 此过程需要 Linux 虚拟机。将 velero-vsphere 二进制文件下载到运行 kubectl-vspherekubectl CLI 的 Linux 跳转主机。
  1. 下载 适用于 vSphere 的 Velero 插件 CLI。
    查看 兼容性列表,然后从此处下载目标版本: https://github.com/vmware-tanzu/velero-plugin-for-vsphere/releases
    注: 在接下来的命令中,将 X.Y.Z 替换为下载的 Velero CLI 和插件的版本号。
  2. 将 CLI 安全复制到 Linux 跳转主机。例如:
    pscp -P 22 C:\temp\velero-vsphere-X.Y.Z-linux-amd64.tar.gz [email protected]:/home/ubuntu/tanzu
  3. 提取 velero-vsphere CLI 并将其设置为可写入。
    tar -xf velero-vsphere-X.Y.Z-linux-amd64.tar.gz
    chmod +x velero-vsphere
  4. 将 CLI 添加到您的路径。
    export PATH="$(pwd)/velero-vsphere-X.Y.Z-linux-amd64:$PATH"
  5. 使用以下内容创建 s3-credentials 文件。
    aws_access_key_id = ACCESS-KEY-ID-STRING
    aws_secret_access_key = SECRET-ACCESS-KEY-STRING
  6. 获取与 S3 兼容的对象存储的区域、 URL 和桶名称。
  7. 使用 kubectl 的 vSphere 插件 登录 主管
  8. 将上下文切换到 主管
    kubectl config use-context SUPERVISOR-CLUSTER-IP-ADDRESS
  9. 运行以下 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。
  10. 验证 适用于 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 后的所有内容)。
  11. 按需执行故障排除。

    如果安装不成功,请移除安装并重试。要移除安装,请按列出的顺序完成下一节中的步骤。

附录:卸载 适用于 vSphere 的 Velero 插件

完成以下步骤以卸载 适用于 vSphere 的 Velero 插件
  1. 运行 velero-vsphere CLI 以卸载 适用于 vSphere 的 Velero 插件
    ./velero-vsphere uninstall -n velero
  2. 验证名为 velerovSphere Pod 是否已移除。
    kubectl get pods -n velero

    如果看到容器“正在终止”,请等待其移除后再继续。

  3. 使用 vSphere Client,删除手动创建的名为 vSphere 命名空间velero
    注: 在命名空间删除完成之前,不要继续执行下一步。可以使用 kubectl 验证 velero 命名空间是否已移除(但不要使用 kubectl 移除 velero 命名空间)。

附录:在气隙环境中安装 适用于 vSphere 的 Velero 插件

如果计划在气隙环境中安装 适用于 vSphere 的 Velero 插件,则必须使用自定义映像进行安装。您必须确保自定义映像的 backup-driverdata-manager-for-plugin 的匹配映像在预期的注册表中可用,并且可从 Kubernetes 集群中访问。在气隙环境中,自定义映像应在专用注册表中,因为 Docker Hub 中已发布的映像不可访问。

要安装此插件,请执行以下步骤:
  1. 下载 velero-plugin-for-vspherebackup-driverdata-manager-for-plugin 的已发布映像。
  2. 重命名映像,也就是使用匹配的 <Registry endpoint and path><Version tag> 对其进行标记,然后将其上载到自定义存储库中。
  3. 使用自定义的 velero-plugin-for-vsphere 映像安装插件。

    在 vanilla 集群中安装 适用于 vSphere 的 Velero 插件 时,它会在后台部署两个附加组件:backup-driver 部署和 data-manager-for-plugin DaemonSet。在 主管 和 Tanzu Kubernetes 集群中,仅部署 backup-driver 部署。

    提供 velero-plugin-for-vsphere 的容器映像时,将使用映像解析机制解析匹配的 backup-driverdata-manager-for-plugin 映像。

    容器映像已正式使用以下模式:
    <Registry endpoint and path>/<Container name>:<Version tag>

    提供 velero-plugin-for-vsphere 容器映像时,将解析具有匹配的 <Registry endpoint and path><Version tag>backup-driverdata-manager-for-plugin 的相应映像。

    例如,请考虑以下 velero-plugin-for-vsphere 容器映像:
    abc.io:8989/x/y/.../z/velero-plugin-for-vsphere:vX.Y.Z
    应当提取以下匹配的 backup-driverdata-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
  4. 对安装进行故障排除。
    如果在解析 backup-driverdata-manager-for-plugin 的匹配映像时出现任何问题或错误,安装将回退到 Docker Hub 中官方 velerovsphereplugin 存储库中的相应映像。以下问题会触发回退机制:
    1. 在用户输入的自定义 velero-plugin-for-vsphere 映像中使用意外的容器名称。

      例如,将使用 x/y/velero-velero-plugin-for-vsphere:vX.Y.Z

    2. Velero 部署名称自定义为除 velero 以外的任何其他内容。例如,如果在部署 Velero 之前将 Velero 部署名称更新为 Velero manifests 文件中的 velero-server,则会触发该问题。

      velero-plugin-for-vsphere 中的现有映像解析机制只能识别具有固定名称 velero 的 Velero 部署。