备份和还原集群工作负载

本主题介绍如何备份和还原具有独立管理集群的 TKG 的 Tanzu Kubernetes Grid (TKG) 工作负载集群上托管的工作负载和动态存储卷。

要备份和还原集群基础架构、独立管理集群和工作负载集群对象本身,请参见备份和还原管理和工作负载集群基础架构

要备份和还原 vSphere with Tanzu 集群(包括主管集群及其创建的工作负载集群),请参见 VMware vSphere 8.0 文档中的备份和还原 vSphere with Tanzu

设置 Velero

您可以使用 Velero(开源社区标准工具)备份和还原 TKG 独立管理集群基础架构和工作负载。

Velero 支持各种存储提供程序以存储其备份。Velero 还支持:

  • 预挂接和后挂接备份还原,以在备份和还原事件之前或之后运行自定义进程。
  • 排除不适合备份/还原的工作负载或集群状态的各个方面。

Tanzu Kubernetes Grid 订阅包括对 VMware 测试的、兼容的 Velero 发行版的支持,可从 Tanzu Kubernetes Grid 下载页面获取。

要备份和还原 TKG 集群,您需要:

完成上述必备条件后,还可以使用 Velero 在集群之间迁移工作负载。有关说明,请参见 Velero 文档中的集群迁移资源筛选

安装 Velero CLI

注意

如果已安装 Velero CLI v1.9.x 或更低版本(随早期版本的 TKG 一起分发),则需要升级到 v1.10.3。较旧的 Velero 版本不能与 v1.10 及更高版本中使用的 CRD 一起使用。有关信息,请参见下面的升级 Velero

要安装 Velero CLI v1.10.3,请执行以下操作:

  1. 转到 Tanzu Kubernetes Grid 下载页面,然后使用您的 VMware Customer Connect 凭据登录。
  2. 产品下载下,单击转到下载 (Go to Downloads)
  3. 滚动到 Velero 条目,然后下载适用于您的工作站操作系统的 Velero CLI .gz 文件。其文件名以 velero-linux-velero-mac-velero-windows64- 开头。
  4. 使用 gunzip 命令或您选择的解压缩工具解压缩二进制文件:

    gzip -d <RELEASE-TARBALL-NAME>.gz
    
  5. 将适用于您的平台的 CLI 二进制文件重命名为 velero,确保它是可执行的,然后将其添加到 PATH

    macOS 和 Linux
    1. 将二进制文件移入 /usr/local/bin 文件夹并将其重命名为 velero
    2. 将文件指定为可执行文件:
    chmod +x /usr/local/bin/velero
    
    Windows
    1. 创建新的 Program Files\velero 文件夹并将二进制文件复制到其中。
    2. 将二进制文件重命名为 velero.exe
    3. 右键单击 velero 文件夹,选择属性 (Properties) > 安全 (Security),并确保您的用户帐户具有完全控制 (Full Control) 权限。
    4. 使用 Windows Search 搜索 env
    5. 选择编辑系统环境变量 (Edit the system environment variables),然后单击环境变量 (Environment Variables)按钮。
    6. 选择系统变量 (System variables)下的 Path,然后单击编辑 (Edit)
    7. 单击新建 (New)以添加新行,然后输入 velero 二进制文件的路径。

升级 Velero

Velero v1.10.3 使用的 CRD 与 v1.9.x 不同。此外,Velero v1.10 采用 Kopia with Restic 作为上载程序,这导致组件和命令的命名以及 Velero 运行方式发生了一些更改。有关 v1.9.x 和 v1.10 之间的破坏性更改的详细信息,请参见 Velero v1.10 Changelog 中的重大更改。如果安装了具有先前版本的 TKG 的 Velero v1.9.x,则必须升级 Velero。

  1. 按照安装 Velero CLI 中的过程安装 Velero v1.10.3。
  2. 使用 Velero v1.10 二进制文件更新 CRD 定义。

    velero install --crds-only --dry-run -o yaml | kubectl apply -f -
    
  3. 更新 Velero 部署和守护进程集配置,以匹配在 Velero v1.10 中发生的组件重命名。

    在以下命令中,uploader_type 可以是 restickopia

    kubectl get deploy -n velero -ojson \
    | sed "s#\"image\"\: \"velero\/velero\:v[0-9]*.[0-9]*.[0-9]\"#\"image\"\: \"velero\/velero\:v1.10.0\"#g" \
    | sed "s#\"server\",#\"server\",\"--uploader-type=$uploader_type\",#g" \
    | sed "s#default-volumes-to-restic#default-volumes-to-fs-backup#g" \
    | sed "s#default-restic-prune-frequency#default-repo-maintain-frequency#g" \
    | sed "s#restic-timeout#fs-backup-timeout#g" \
    | kubectl apply -f -
    
  4. (可选)如果使用的是 restic 守护进程集,请重命名相应的组件。

    echo $(kubectl get ds -n velero restic -ojson) \
    | sed "s#\"image\"\: \"velero\/velero\:v[0-9]*.[0-9]*.[0-9]\"#\"image\"\: \"velero\/velero\:v1.10.0\"#g" \
    | sed "s#\"name\"\: \"restic\"#\"name\"\: \"node-agent\"#g" \
    | sed "s#\[ \"restic\",#\[ \"node-agent\",#g" \
    | kubectl apply -f -
    kubectl delete ds -n velero restic --force --grace-period 0 
    

有关详细信息,请参见 Velero 文档中的升级至 Velero 1.10

设置存储提供程序

要备份 Tanzu Kubernetes Grid 工作负载集群内容,您需要以下存储位置:

  • 集群中 Kubernetes 元数据的集群对象存储备份
  • 集群使用的数据的卷快照

请参见 Velero 文档中的 备份存储位置和卷快照位置。Velero 支持各种存储提供程序,这些提供程序可以是:

  • 联机云存储提供程序。
  • 用于代理或气隙环境的内部部署对象存储服务,例如 MinIO。

VMware 建议将唯一的存储桶专用于每个集群。

要设置 MinIO,请执行以下操作:

  1. 使用 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
    
  2. 将凭据保存到本地文件以传递到 velero install--secret-file 选项,例如:

    [default]
    aws_access_key_id=minio
    aws_secret_access_key=minio123
    

vSphere 的存储

在 vSphere 上,集群对象存储备份和卷快照将保存到同一存储位置。此位置必须是 Amazon Web Services (AWS) 或 S3 提供程序(如 MinIO)上与 S3 兼容的外部存储。

要为 vSphere 上的 Velero 设置存储,请参见适用于 v1.5.1 插件的 Vanilla Kubernetes 集群中的 Velero Plugin for vSphere

用于 AWS 的存储和 AWS 上的存储

要为 AWS 上的 Velero 设置存储,请按照适用于 AWS 存储库的 Velero 插件中的过程操作:

  1. 创建 S3 存储桶

  2. 设置 Velero 的权限

根据需要为每个插件设置 S3 存储。对象存储插件存储和检索集群对象备份,卷快照程序存储和检索数据卷。

用于 Azure 的存储和 Azure 上的存储

要为 Azure 上的 Velero 设置存储,请按照适用于 Azure 存储库的 Velero 插件中的过程操作:

  1. 创建 Azure 存储帐户和 blob 容器

  2. 获取包含虚拟机和磁盘的资源组

  3. 设置 Velero 的权限

根据需要为每个插件设置 S3 存储。对象存储插件存储和检索集群对象备份,卷快照程序存储和检索数据卷。

将 Velero 服务器部署到工作负载集群

要将 Velero 服务器部署到工作负载集群,请运行 velero install 命令。此命令会在集群上创建一个名为 velero 的命名空间,并在其中放置一个名为 velero 的部署。

注意

如果集群已安装 Velero,请按照升级 Velero 中的步骤操作。

Velero 安装选项

要安装 Velero,请使用以下选项运行 velero install

  • --provider $PROVIDER:例如,aws
  • --plugins projects.registry.vmware.com/tkg/velero/velero-plugin-for-aws:v1.6.2_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

此过程会在 vSphere 上的独立管理集群管理的工作负载集群上安装 Velero。

要将 Velero 部署到充当 Tanzu Kubernetes Grid 管理集群的 vSphere with Tanzu 主管集群,请参见备份和还原 vSphere with Tanzu

  1. 使用上面 Velero 安装选项中列出的选项运行 velero install,将 Velero 服务器安装到 kubeconfig 中的当前默认集群。

    • 例如,要使用 MinIO 作为对象存储,请按照 Velero 文档中的 MinIO 服务器设置说明进行操作:

      velero install --provider aws --plugins "projects.registry.vmware.com/tkg/velero/velero-plugin-for-aws:v1.6.2_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.5.1 存储库中的 Vanilla Kubernetes 集群的安装部分。

    • 将 Velero 服务器安装到集群中会在名为 velero 的集群中创建一个命名空间,并在其中放置名为 velero 的部署。

  2. 如果未将凭据文件传递到上面具有 velero install--secret-file,请从备份 S3 存储桶配置对 Velero 的授予访问权限。例如,在 AWS 上,将策略附加到 IAM 角色 nodes.tkg.cloud.vmware.com,该角色管理 Velero 等托管的应用程序,以允许访问 S3 存储桶。

  3. 添加 Velero Plugin for vSphere,除了存储集群对象外,此插件还允许 Velero 使用 S3 存储桶存储工作负载数据的 CSI 卷快照:

    1. 下载 Velero Plugin for vSphere v1.4.3 映像。
    2. 检索 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
      
    3. (可选)检查并确认密钥配置文件 csi-vsphere.conf 中的 vCenter IP 地址、用户名和密码值,如下所示:

      cluster-id = "CLUSTER-ID"
      
      [VirtualCenter "VCENTER-IP"]
      user = "USERNAME"
      password = "PASSWORD"
      port = "443"
      
    4. 使用配置文件在命名空间 velero 中创建 velero-vsphere-config-secret 密钥:

      kubectl -n velero create secret generic velero-vsphere-config-secret --from-file=csi-vsphere.conf
      
    5. 为引用密钥的 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
      
    6. 应用 ConfigMap

      kubectl -n velero apply -f velero-plugin.conf
      
    7. 添加插件:

      velero plugin add PLUGIN-IMAGE
      

      其中,PLUGIN-IMAGEVelero Plugin for vSphere repo v1.5.1 中列出的容器映像的注册表路径,例如,http://projects.registry.vmware.com/tkg/velero/velero-plugin-for-vsphere:v1.5.1_vmware.1

    8. 如果您创建该帐户时尚未包含这些权限,请通过为 Tanzu Kubernetes Grid 帐户创建的角色添加以下 VirtualMachine 权限来启用该插件:

      • 配置 > 切换磁盘更改跟踪
      • 置备 > 允许对磁盘进行只读访问
      • 置备 > 允许下载虚拟机
      • 快照管理 > 创建快照
      • 快照管理 > 移除快照

在 AWS 上的集群上安装 Velero

  1. 要在 AWS 上的工作负载集群上安装 Velero,请按照适用于 AWS 存储库的 Velero 插件中的 安装和启动 Velero 过程进行操作。
  2. 使用上面 Velero 安装厢中列出的选项运行 velero install

在 Azure 上的集群上安装 Velero

  1. 要在 Azure 上的工作负载集群上安装 Velero,请按照适用于 Azure 存储库的 Velero 插件中的 安装并启动 Velero 过程进行操作。
  2. 使用上面 Velero 安装厢中列出的选项运行 velero install

备份和还原工作负载

使用 Velero 备份和还原整个集群或特定命名空间的工作负载集群的当前工作负载和持久卷状态。

备份工作负载

要备份工作负载集群的内容,请执行以下操作:

  1. 按照上面针对您的基础架构的部署 Velero 服务器到集群说明,在工作负载集群上部署 Velero 服务器以及适用于 vSphere 的 Velero 插件(如果需要)。

  2. 备份集群内容:

    velero backup create your_backup_name
    
  3. 如果 velero backup 返回 transport is closing 错误,请在增加内存限制后重试,如 Velero 文档中的安装后更新资源请求和限制中所述。

注意

不支持备份和还原 Windows 和多操作系统工作负载集群。

还原工作负载

要从备份还原工作负载集群的内容,请执行以下操作:

  1. 创建新集群。无法将集群备份还原到现有集群。

  2. 按照上面针对您的基础架构的部署 Velero 服务器到集群说明,在新集群上部署 Velero 服务器以及适用于 vSphere 的 Velero 插件(如果需要)。

  3. 还原集群内容:

    velero backup get
    velero restore create your_restore_name --from-backup your_backup_name
    
check-circle-line exclamation-circle-line close-line
Scroll to top icon