about locations

1. Overview

velero有两个自定义资源, BackupStorageLocationVolumeSnapshotLocation用于配置velero备份及其相关的持久卷快照的存储位置。

BackupStorageLoaction定义为存储区, 存储区的前缀在bucket下,所有velero数据存储在该buket中存储。以及一组其他特定于提供程序的字段(例如AWS区域,Azure存储账户等)。API 文档连接https://velero.io/docs/v1.0.0/api-types/backupstoragelocation/

VolumeSnapshotLocation是由提供商指定的字段(例如,AWS区域,Azure资源组,Portworx快照类型等)定义。API 文档连接 https://velero.io/docs/v1.0.0/api-types/volumesnapshotlocation/

用户可以预先配置一个或多个BackupStroageLocationsVolumeSnapshotLoactions,并且在创建备份时选择应该存储备份和相关快照的位置。

这个配置设计支持许多不同的用例,包括:

  • 在单个Velero备份中(例如在同时具有EBS卷和Portworx卷的群集中)拍摄不止一种持久卷的快照.

  • 将不同地区的velero备份放入到不同的kucket中。

  • 对于支持它的卷提供程序,将一些快照存储在本地一些快照存储在云中。

2. Limitations / Caveats

  • Velero针对每个提供商仅支持一套凭据。如果用于同一个提供者,则不能再不同的位置使用不同的凭据。

没有理解明白

  • 卷快照仍然受提供商允许您创建快照的位置的限制。例如,AWS和Azure不允许在不同于卷的所在区域创建卷快照。如果使用快照的位置来进行velero备份,则备份失败。

没有理解明白

  • 每个Velero备份每个卷提供者都有一个BackupStroageLocation和一个VolumeSnapshotLocation.目前,无法将单个Velero备份发送到多个备份存储位置,或者同时将单个卷快照发送到多个位置。但是,如果跨位置的备份是必须的,则可以设置多个计划的备份,这些备份仅在所使用的存储位置有多不同。

这一条很重要,意思应该是不支持多地备份,如果需要可以创建多个备份任务。多个备份任务仅在存储位置不同,其他信息或配置完全相同。

  • 不支持跨提供商快照,如果群集具有多个类型的卷(例如,EBS和Portworx),但是仅为EBS配置了VolumeSnapshotLocation,则velero仅将快照EBS卷。

  • 恢复数据存储在主Velero存储桶的前缀/子目录下,并将进入到用户在备份创建时选择的BackupStroageLocation对应的存储桶。

3. Example

使用此配置机制可以解决常见用例:

  1. 示例1: 在单个velero备份中(例如同时具有EBS卷和Portworx卷的集群中)拍摄不止一种持久卷的快照

此处是在EBS卷和Portworx卷中,建立快照:

server端的配置:

velero snapshot-location create ebs-us-east-1 --provider aws --config region=us-east-1

velero snapshot-location create portworx-cloud --povider portworx --config type=cloud

备份时创建:

velero backup create full-cluster-backup --volume-snapshot-locations ebs-us-east-1, portworx-cloud

上述示例中,仅为我们的两个提供程序配置了一个可能的卷快照位置(aws是ebs-us-east-1, portwork是portwork-cloud)。所以在以下情况下,velero不需要明确指定他们创建备份。

velero backup create full-cluster-backup

这里应该是指定"–volume-snapshot-locatinos"是"ebs-us-east-1, portworx-cloud",具体需要实践确定。

  1. 示例2: 在不同地域创建不同的velero backups存储桶, 这里是eastern USA regionwestern USA region

server端的配置:

velero backup-location create default --provider aws --bucket velero-backups --config region=us-east-1

velero backup-location create s3-alt-region --provider aws --bucket velero-backups-alt --config region=us-west-1

备份时操作:

# The Velero server will automatically store backups in the backup storage location named "default" if
# one is not specified when creating the backup. You can alter which backup storage location is used
# by default by setting the --default-backup-storage-location flag on the `velero server` command (run
# by the Velero deployment) to the name of a different backup storage location.
velero backup create full-cluster-backup

注释:
在以下情况中,velero服务器将自动备份存储在名为"默认"的备份存储位置中

  1. 在创建备份时未指定,可以更改使用哪个备份存储位置
  2. 默认情况下,可以在velero服务器命令上设置default-backup-storage-location标志,更改其他备份存储位置的名称。

或者,这个命令:

velero backup create full-cluster-alternate-location-backup --storage-location s3-alt-region

  1. 示例3: 对于支持它的卷提供程序(Portworx),将一些快照存储在本地集群中,其他快照存储在云中。

服务器中的配置:

velero snapshot-location create portworx-local --provider portworx --config tyep=local

velero snapshot-location create portworx-cloud --provider portworx --config type=cloud

在备份时创建:

# Note that since in this example we have two possible volume snapshot locations for the Portworx
# provider, we need to explicitly specify which one to use when creating a backup. Alternately,
# you can set the --default-volume-snapshot-locations flag on the `velero server` command (run by
# the Velero deployment) to specify which location should be used for each provider by default, in
# which case you don't need to specify it when creating a backup.
velero backup create local-snapshot-backup \
    --volume-snapshot-locations portworx-local

相关说明: 在此示例中,我们为Portworx提供了两个可能的卷快照位置
provider,我们需要在创建备份时明确指定要使用的提供商。
在velero服务器命令上设置–default-volume-snapshot-locations标志,指定默认情况下每个提供商应使用的位置
在这种情况下,无需再创建备份时指定。velero备份创建本地快照备份。

或者

velero backup create cloud-snapshot-bakcup --volume-snapshot-locations portworx-cloud

  1. 示例4:使用本地单一存储

如果在多个地方没有用例,那么使用velero仍然很容易。假设在us-west-1区域的AWS上运行。

服务器中的配置:

velero backup-location create default --provider aws --bucket velero-backups --config region=us-west-1

velero snapshot-location create ebs-us-west-1 --provider aws --config region=us-west-1

在备份时创建

# Velero will automatically use your configured backup storage location and volume snapshot location.
# Nothing needs to be specified when creating a backup.
velero backup create full-cluster-backup

velero将自动使用您配置的备份存储位置和卷快照位置。
创建备份时无需指定任何内容,velero备份创建全集群备份。

4. 其他操作实例

非k8s可以跳过

如果使用的是Azure的AKS,则可能要将卷快照存储在创建AKS群集时自动创建的“基础结构”资源组之外。 通过在快照位置的config部分下指定resourceGroup,可以使用VolumeSnapshotLocation来实现。 有关详细信息,请参见Azure卷快照位置文档。

如果您使用的是Azure,则可能要跨多个存储帐户和/或资源组存储Velero备份。 通过在备份位置的config部分下分别指定storageAccount和/或resourceGroup,可以使用BackupStorageLocation来实现。 有关详细信息,请参见Azure备份存储位置文档。

后续待解决的任务

  1. 第一小节中BackupStorageLocationVolumeSanpshotLocation如何应用?具体含义是什么?
    BackupStorageLocation 定义 Kubernetes 集群资源的数据存放位置,也就是集群对象数据,不是 PVC 的数据。主要支持的后端存储是 S3 兼容的存储,比如:Mino 和阿里云 OSS 等。

    VolumeSnapshotLocation 主要用来给PV做快照,需要云提供商提供插件。阿里云已经提供了插件,这个需要使用 CSI 等存储机制。你也可以使用专门的备份工具 Restic,把 PV 数据备份到阿里云 OSS 中去(安装时需要自定义选项)。

    此处提到的插件是什么概念? 又如何使用?

  2. 第3小节,需要实践感受一下,补充相关操作实例。

发布了21 篇原创文章 · 获赞 0 · 访问量 2611

猜你喜欢

转载自blog.csdn.net/u012720518/article/details/105449197