本主题介绍如何备份和还原具有独立管理集群的 TKG 的 Tanzu Kubernetes Grid (TKG) 工作负载集群上托管的工作负载和动态存储卷。
要备份和还原集群基础架构、独立管理集群和工作负载集群对象本身,请参见备份和还原管理和工作负载集群基础架构。
要备份和还原 vSphere with Tanzu 集群(包括主管集群及其创建的工作负载集群),请参见 VMware vSphere 8.0 文档中的备份和还原 vSphere with Tanzu。
您可以使用 Velero(开源社区标准工具)备份和还原 TKG 独立管理集群基础架构和工作负载。
Velero 支持各种存储提供程序以存储其备份。Velero 还支持:
Tanzu Kubernetes Grid 订阅包括对 VMware 测试的、兼容的 Velero 发行版的支持,可从 Tanzu Kubernetes Grid 下载页面获取。
要备份和还原 TKG 集群,您需要:
完成上述必备条件后,还可以使用 Velero 在集群之间迁移工作负载。有关说明,请参见 Velero 文档中的集群迁移和资源筛选。
如果已安装具有早期版本的 TKG 的 Velero CLI,则必须将 Velero 升级到 v1.11.1。有关信息,请参见下面的升级 Velero。
要安装 Velero CLI v1.11.1,请执行以下操作:
.gz
文件。其文件名以 velero-linux-
、velero-mac-
或 velero-windows64-
开头。使用 gunzip
命令或您选择的解压缩工具解压缩二进制文件:
gzip -d <RELEASE-TARBALL-NAME>.gz
将适用于您的平台的 CLI 二进制文件重命名为 velero
,确保它是可执行的,然后将其添加到 PATH
。
/usr/local/bin
文件夹并将其重命名为 velero
。chmod +x /usr/local/bin/velero
Program Files\velero
文件夹并将二进制文件复制到其中。velero.exe
。velero
文件夹,选择属性 (Properties) > 安全 (Security),并确保您的用户帐户具有完全控制 (Full Control) 权限。env
。Path
,然后单击编辑 (Edit)。velero
二进制文件的路径。如果已将 TKG 从 v2.3 升级到 v2.4,则必须将 Velero 升级到 v1.11.1。
重要Velero v1.10.x 使用不同的 CRD、不同的组件命名和功能与 v1.9.x 不同。如果仍在 TKG 2.3 中使用 Velero v1.9.x,并且已升级到 TKG 2.4,则必须先将 Velero 从 v1.9.x 升级到 v1.10.x,然后才能升级到 v1.11.1。有关如何将 Velero 从 v1.9.x 升级到 v1.10.x 的说明,请按照 TKG 2.3 文档中升级 Velero 的过程进行操作,然后再将 Velero 升级到 v1.11.1。
要将 Velero 从 v1.10.x 升级到 v1.11.1,请执行以下步骤。
使用 Velero v1.11.1 二进制文件更新 CRD 定义。
velero install --crds-only --dry-run -o yaml | kubectl apply -f -
更新 Velero 部署配置,以将新版本的 Velero 和 Velero 插件版本用于基础架构。
kubectl set image deployment/velero \
velero=velero/velero:v1.11.1 \
velero-plugin-for-vsphere=velero/velero-plugin-for-vsphere:v1.5.1 \
--namespace velero
kubectl set image deployment/velero \
velero=velero/velero:v1.11.1 \
velero-plugin-for-aws=velero/velero-plugin-for-aws:v1.7.1 \
--namespace velero
kubectl set image deployment/velero \
velero=velero/velero:v1.11.1 \
velero-plugin-for-microsoft-azure=velero/velero-plugin-for-microsoft-azure:v1.7.1 \
--namespace velero
(可选)如果使用的是 node
守护进程集,请更新节点代理的版本。
kubectl set image daemonset/node-agent \
node-agent=velero/velero:v1.11.1 \
--namespace velero
有关详细信息,请参见 Velero 文档中的升级至 Velero 1.11。
要备份 Tanzu Kubernetes Grid 工作负载集群内容,您需要以下存储位置:
请参见 Velero 文档中的 备份存储位置和卷快照位置。Velero 支持各种存储提供程序,这些提供程序可以是:
VMware 建议将唯一的存储桶专用于每个集群。
要设置 MinIO,请执行以下操作:
使用 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
将凭据保存到本地文件以传递到 velero install
的 --secret-file
选项,例如:
[default]
aws_access_key_id=minio
aws_secret_access_key=minio123
在 vSphere 上,集群对象存储备份和卷快照将保存到同一存储位置。此位置必须是 Amazon Web Services (AWS) 或 S3 提供程序(如 MinIO)上与 S3 兼容的外部存储。
要为 vSphere 上的 Velero 设置存储,请参见适用于 v1.5.1 插件的 Vanilla Kubernetes 集群中的 Velero Plugin for vSphere。
要为 AWS 上的 Velero 设置存储,请按照适用于 AWS 存储库的 Velero 插件中的过程操作:
根据需要为每个插件设置 S3 存储。对象存储插件存储和检索集群对象备份,卷快照程序存储和检索数据卷。
要为 Azure 上的 Velero 设置存储,请按照适用于 Azure 存储库的 Velero 插件中的过程操作:
根据需要为每个插件设置 S3 存储。对象存储插件存储和检索集群对象备份,卷快照程序存储和检索数据卷。
要将 Velero 服务器部署到工作负载集群,请运行 velero install
命令。此命令会在集群上创建一个名为 velero
的命名空间,并在其中放置一个名为 velero
的部署。
注意如果集群已安装 Velero,请按照升级 Velero 中的步骤操作。
要安装 Velero,请使用以下选项运行 velero install
:
--provider $PROVIDER
:例如,aws
--plugins projects.registry.vmware.com/tkg/velero/velero-plugin-for-aws:v1.7.1_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。
要将 Velero 部署到充当 Tanzu Kubernetes Grid 管理集群的 vSphere with Tanzu 主管集群,请参见备份和还原 vSphere with Tanzu。
使用上面 Velero 安装选项中列出的选项运行 velero install
,将 Velero 服务器安装到 kubeconfig
中的当前默认集群。
例如,要使用 MinIO 作为对象存储,请按照 Velero 文档中的 MinIO 服务器设置说明进行操作:
velero install --provider aws --plugins "projects.registry.vmware.com/tkg/velero/velero-plugin-for-aws:v1.7.1_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
的部署。
如果未将凭据文件传递到上面具有 velero install
的 --secret-file
,请从备份 S3 存储桶配置对 Velero 的授予访问权限。例如,在 AWS 上,将策略附加到 IAM 角色 nodes.tkg.cloud.vmware.com
,该角色管理 Velero 等托管的应用程序,以允许访问 S3 存储桶。
添加 Velero Plugin for vSphere,除了存储集群对象外,此插件还允许 Velero 使用 S3 存储桶存储工作负载数据的 CSI 卷快照:
检索 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
(可选)检查并确认密钥配置文件 csi-vsphere.conf
中的 vCenter IP 地址、用户名和密码值,如下所示:
cluster-id = "CLUSTER-ID"
[VirtualCenter "VCENTER-IP"]
user = "USERNAME"
password = "PASSWORD"
port = "443"
使用配置文件在命名空间 velero
中创建 velero-vsphere-config-secret
密钥:
kubectl -n velero create secret generic velero-vsphere-config-secret --from-file=csi-vsphere.conf
为引用密钥的 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
应用 ConfigMap
:
kubectl -n velero apply -f velero-plugin.conf
添加插件:
velero plugin add PLUGIN-IMAGE
其中,PLUGIN-IMAGE
是 Velero Plugin for vSphere repo v1.5.1 中列出的容器映像的注册表路径,例如,http://projects.registry.vmware.com/tkg/velero/velero-plugin-for-vsphere:v1.5.1_vmware.1
。
如果您创建该帐户时尚未包含这些权限,请通过为 Tanzu Kubernetes Grid 帐户创建的角色添加以下 VirtualMachine 权限来启用该插件:
velero install
。velero install
。使用 Velero 备份和还原整个集群或特定命名空间的工作负载集群的当前工作负载和持久卷状态。
要备份工作负载集群的内容,请执行以下操作:
按照上面针对您的基础架构的部署 Velero 服务器到集群说明,在工作负载集群上部署 Velero 服务器以及适用于 vSphere 的 Velero 插件(如果需要)。
备份集群内容:
velero backup create your_backup_name
如果 velero backup
返回 transport is closing
错误,请在增加内存限制后重试,如 Velero 文档中的安装后更新资源请求和限制中所述。
注意不支持备份和还原 Windows 和多操作系统工作负载集群。
要从备份还原工作负载集群的内容,请执行以下操作:
创建新集群。无法将集群备份还原到现有集群。
按照上面针对您的基础架构的部署 Velero 服务器到集群说明,在新集群上部署 Velero 服务器以及适用于 vSphere 的 Velero 插件(如果需要)。
还原集群内容:
velero backup get
velero restore create your_restore_name --from-backup your_backup_name