ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Velero Backup Storage Locations 与 Volume Snapshot Locations 配置指南:多区域、多 Provider 与独立凭据实战

Velero Backup Storage Locations 与 Volume Snapshot Locations 配置指南:多区域、多 Provider 与独立凭据实战 Velero Backup Storage Locations 与 Volume Snapshot Locations 配置指南多区域、多 Provider 与独立凭据实战【免费下载链接】veleroBackup and migrate Kubernetes applications and their persistent volumes项目地址: https://gitcode.com/GitHub_Trending/ve/veleroVelero 通过BackupStorageLocationBSL与VolumeSnapshotLocationVSL两个自定义资源将「备份元数据存放位置」与「持久卷快照存放位置」解耦让你可以在创建备份时按需选择存储目标。本文以仓库文档 locations.md 为主体结合 BackupStorageLocation 类型定义、VolumeSnapshotLocation 类型定义 与 server 启动参数完整讲解两类 Location 的模型、参数、默认值规则、多区域/多 Provider 场景下的 CLI 实操以及基于 Secret 的独立凭据配置读完后你可以直接在自己的集群中落地一套 Velero、多套存储目标的备份架构。一、两类 Location 的核心模型Velero 使用两个自定义资源CRD来配置备份数据的存放位置BackupStorageLocation定义了一个bucket 或 bucket 内某个 prefix作为 Velero 全部备份数据的存放空间外加一组 Provider 相关的字段如 AWS region、Azure storage account 等。Velero 假定它对这个位置拥有完全控制权因此官方建议为 Velero 使用专用的 bucket 或 prefix如果只使用 prefix则 bucket 其余部分可以安全地用于其他用途。VolumeSnapshotLocation完全由 Provider 相关字段定义如 AWS region、Azure resource group、Portworx snapshot type 等用于说明卷快照创建到哪里。两者的 Provider 级可配置参数分别记录在 API 文档 backupstoragelocation.md 与 volumesnapshotlocation.md 中。用户可以在服务器部署阶段预先配置一个或多个 BSL、一个或多个 VSL并在创建备份时选择当前备份及其快照应该写入的位置。这种预配置 创建时选择的设计让一套 Velero 能够支撑多种截然不同的使用场景在同一个 Velero 备份中对多种类型的持久卷分别打快照。例如集群中同时存在 EBS 卷与 Portworx 卷。让一部分备份落入美东地区的 bucket另一部分落入美西地区的 bucket甚至落到完全不同的存储 Provider 上。对于支持本地快照的 Provider如 Portworx可以让部分快照存在集群本地部分快照存到云端。从源码看 CRD 结构在 backupstoragelocation_types.go 中BackupStorageLocationSpec的核心字段包括Provider必填对象存储 Provider 名称最终会路由到对应的对象存储插件。Config map[string]string透传给对象存储插件的 Provider 专属配置。Credential *SecretKeySelector本 Location 使用的独立凭据引用。StorageType内联目前仅支持ObjectStoragebucket 可选 prefix 可选 CA 证书。Default bool标记该位置是否为默认 BSL。AccessMode取值为ReadWrite或ReadOnly。BackupSyncPeriod从对象存储同步备份对象的周期设为0s可关闭同步。ValidationFrequency对对象存储做可用性校验的频率默认 1 分钟设为0s可关闭校验。VolumeSnapshotLocationSpec见 volume_snapshot_location_type.go则要精简得多只有Provider、Config与Credential三个字段——它的语义完全由插件决定。两个 CRD 都暴露了Phase状态Available/Unavailablevelero backup-location get与velero snapshot-location get输出的 Phase 列即来源于此。二、默认位置与创建时的选择规则每个 Velero 备份有一个BSL以及每个卷 Provider 各一个VSL。目前无法把单个备份同时写入多个 BSL也无法把单个卷快照同时写入多个 VSL如果跨位置冗余很重要官方建议配置多个仅存储位置不同的定时备份Schedule。BSL 的默认值规则Velero 至少需要一个 BSL默认名为default未显式指定存储位置的备份会写入该默认位置。默认名可通过velero server的--default-backup-storage-location参数修改该参数在源码 config.go 中标记为 DEPRECATED将在 v2.0 移除官方推荐改用velero backup-location set --default。VSL 的默认值规则见 locations.md如果某个 Provider 只配置了一个 VSLVelero 会自动把它当作该 Provider 的默认位置如果配置了多个VSL则创建备份时必须显式指定或者通过velero server的--default-volume-snapshot-locations参数为每个 Provider 指定默认 VSL。该参数的格式在 config.go 中定义为provider1:location-01,provider2:location-02,...。注意即使卷备份使用 File System BackupFSB只要某个 Provider 配置了多个 VSL创建备份时仍必须指定一个合法的 VSL。这是官方文档 locations.md 中明确强调的限制。三、配置参数参考API 文档要点3.1 BackupStorageLocation 参数主配置参数完整表格见 backupstoragelocation.mdKey类型默认值含义providerString必填对象存储 Provider 名称取值参考 supported-providers.md 中各插件的文档objectStorageObjectStorageLocation必填对象存储规格objectStorage/bucketString必填备份上传的目标 bucketobjectStorage/prefixString可选bucket 内用于存放备份的目录objectStorage/caCertString可选已废弃Base64 编码的 CA 证书用于校验 TLS 连接推荐改用caCertRefobjectStorage/caCertRefSecretKeySelector可选引用同命名空间内包含 CA 证书的 SecretobjectStorage/caCertRef/nameString使用 caCertRef 时必填保存 CA 证书的 Secret 名称objectStorage/caCertRef/keyString使用 caCertRef 时必填Secret 中存放 CA 证书的键名configmap[string]string可选透传给对象存储插件的 Provider 专属配置accessModeStringReadWrite可选值ReadWrite/ReadOnlybackupSyncPeriodDuration可选对象存储备份同步周期0s关闭同步validationFrequencyDuration可选对象存储校验频率默认 1 分钟0s关闭校验credential/name、credential/keyString可选本 Location 使用的 Secret 凭据引用关于caCert与caCertRef两者不可同时指定。源码 backupstoragelocation_types.go 中的Validate()方法会在同时设置时直接返回错误cannot specify both caCert and caCertRef in objectStorage。一个典型的 BSL YAML 示例apiVersion: velero.io/v1 kind: BackupStorageLocation metadata: name: default namespace: velero spec: backupSyncPeriod: 2m0s provider: aws objectStorage: bucket: myBucket credential: name: secret-name key: key-in-secret config: region: us-west-2 profile: default使用自签名证书的 BSL 示例推荐用 Secret 引用方式apiVersion: v1 kind: Secret metadata: name: storage-ca-cert namespace: velero type: Opaque data: ca-bundle.crt: base64-encoded-certificate --- apiVersion: velero.io/v1 kind: BackupStorageLocation metadata: name: default namespace: velero spec: provider: aws objectStorage: bucket: myBucket caCertRef: name: storage-ca-cert key: ca-bundle.crt config: region: us-east-1 s3Url: https://minio.example.com3.2 VolumeSnapshotLocation 参数Key类型默认值含义providerString必填卷快照 Provider 名称configmap[string]string可选透传给卷快照插件的 Provider 专属配置credential/name、credential/keyString可选本 Location 使用的 Secret 凭据引用一个典型的 VSL YAML 示例apiVersion: velero.io/v1 kind: VolumeSnapshotLocation metadata: name: aws-default namespace: velero spec: provider: aws credential: name: secret-name key: key-in-secret config: region: us-west-2 profile: default四、场景化配置实操场景一在同一个备份中对多种类型的持久卷打快照在服务器部署阶段分别创建两个 Provider 的 VSLvelero snapshot-location create ebs-us-east-1 \ --provider aws \ --config regionus-east-1 velero snapshot-location create portworx-cloud \ --provider portworx \ --config typecloud创建备份时用--volume-snapshot-locations指定每个 Provider 至多一个 VSLvelero backup create full-cluster-backup \ --volume-snapshot-locations ebs-us-east-1,portworx-cloud由于本例中每个 Provider 都只有一个 VSLaws只有ebs-us-east-1portworx只有portworx-cloudVelero 会自动使用各自的默认位置创建备份时可以完全省略该参数velero backup create full-cluster-backup场景二部分备份入美东 bucket默认部分入美西 bucket在同一账户、不同 region下创建两个 BSL二者都使用安装时写入cloud-credentialsSecret 的凭据velero backup-location create backups-primary \ --provider aws \ --bucket velero-backups \ --config regionus-east-1 \ --default velero backup-location create backups-secondary \ --provider aws \ --bucket velero-backups \ --config regionus-west-1默认 BSL 是指创建备份时未显式指定 BSL 时数据落盘的位置。你可以随时用velero backup-location set配合--default标志切换默认位置velero backup-location set backups-secondary --default创建备份时不指定 BSL 即写入默认位置velero backup create full-cluster-backup或者显式指定写入次级位置velero backup create full-cluster-alternate-location-backup \ --storage-location backups-secondary场景三Portworx 场景下部分快照存本地、部分存云端在服务器部署阶段创建两个同 Provider 的 VSLvelero snapshot-location create portworx-local \ --provider portworx \ --config typelocal velero snapshot-location create portworx-cloud \ --provider portworx \ --config typecloud由于此时portworxProvider 下有两个 VSL创建备份时必须显式指定除非通过velero server的--default-volume-snapshot-locationsportworx:portworx-local,...设置了默认velero backup create local-snapshot-backup \ --volume-snapshot-locations portworx-local velero backup create cloud-snapshot-backup \ --volume-snapshot-locations portworx-cloud场景四单套位置最简用法如果只有一个使用场景无需任何选择逻辑。以 AWSus-west-1为例部署阶段创建默认 BSL 与 VSLvelero backup-location create backups-primary \ --provider aws \ --bucket velero-backups \ --config regionus-west-1 \ --default velero snapshot-location create ebs-us-west-1 \ --provider aws \ --config regionus-west-1创建备份时 Velero 会自动使用已配置的默认位置什么都不用指定velero backup create full-cluster-backup五、为 Location 配置独立凭据5.1 前置条件使用的对象存储插件与卷快照插件必须支持多凭据特性。Velero 团队维护的官方插件均支持若使用第三方插件请先确认其文档。对应 Provider 的插件需要已经安装参见 overview-plugins.md。需要按插件文档指引准备一份凭据文件。5.2 为 BackupStorageLocation 创建独立凭据在 Velero 命名空间中将凭据文件放入 Secretkey 使用bslkubectl create secret generic -n velero credentials --from-filebsl/path/to/credentialsfile创建 BSL 时通过--credentialsecret-namekey-within-secret引用该 Secretvelero backup-location create bsl-name \ --provider provider \ --bucket bucket \ --config regionregion \ --credentialsecret-namekey-within-secret之后 Velero 与该 BSL 交互时会从指定 Secret 的指定 key 中读取凭据。当 BSL 的 Phase 变为Available后即可使用velero backup-location get使用该 BSL 创建备份时加--storage-location bsl-name也可用velero backup-location set --default bsl-name将其设为默认。5.3 为 VolumeSnapshotLocation 创建独立凭据与 BSL 类似把凭据文件放入 Secretkey 使用vslkubectl create secret generic -n velero credentials --from-filevsl/path/to/credentialsfile创建 VSL 时指定--credentialvelero snapshot-location create vsl-name \ --provider provider \ --config regionregion \ --credentialsecret-namekey-within-secret使用该 VSL 创建备份时通过--volume-snapshot-locations vsl-name[,vsl-name...]指定每个 Provider 至多一个 VSL。5.4 修改已有 Location 的凭据默认情况下所有未显式指定凭据的 BSL/VSL 都使用安装时写入cloud-credentialsSecret 的凭据。可以直接编辑该 Secret 实现凭据轮换但改动会影响所有引用它的 Location。若只想让某一个 Location 改用独立凭据先用上文方式创建 Secret再执行velero backup-location set bsl-name \ --credentialsecret-namekey-within-secretvelero snapshot-location set vsl-name \ --credentialsecret-namekey-within-secret六、重要限制与注意事项多凭据支持依赖插件能力BSL 与 VSL 的多凭据特性都要求插件支持Velero 官方维护的插件均支持第三方插件需自行确认。快照受 Provider 地理限制例如 AWS 与 Azure 都不允许在卷所在 region 之外创建快照。若用与集群卷不同 region 的 VSL 创建备份备份会失败。跨 Provider 快照不被支持如果集群同时有 EBS 与 Portworx 卷但只配置了 EBS 的 VSLVelero 将只对 EBS 卷打快照Portworx 卷会被跳过。FSB 数据位置File System Backup 数据存放在主 Velero bucket 下的一个 prefix/子目录中具体落到哪个 bucket取决于创建备份时用户选择的 BSL。加密职责Velero 备份分为两部分——存放在对象存储中的元数据以及持久卷数据的快照/备份。Velero 本身不对这两部分做加密而是依赖对象存储与快照系统的原生机制FSB 是特例它在文件系统层面备份持久卷数据并发送到 Velero 的对象存储。压缩现状对象元数据的压缩能力有限基于 Go 的 tar 实现。Kubernetes 对象大多远小于 1.5MB 上限因此通常无压缩必要FSB 目前尚未实现压缩但具备去重de-deduplication能力。必须显式指定 VSL 的情形当某个 Provider 配置了多个 VSL 时即使卷备份走 FSB创建备份也必须指定一个合法的 VSL。仅当每个 Provider 只有一个 VSL 时Velero 才会自动使用默认位置。单备份单存储目标单个备份只能对应一个 BSL 与每个 Provider 一个 VSL无法同时写入多个位置。若需跨位置冗余请配置多个仅存储位置不同的定时备份。七、其他实用场景AKS 场景使用 Azure AKS 时可能希望把卷快照存到 AKS 集群自动创建的 infrastructure 资源组之外。可以在 VSL 的config中指定resourceGroup实现详见 Azure 卷快照位置文档 volumesnapshotlocation.md 对应的插件说明。Azure 多存储账户如果希望 Velero 备份分散到多个存储账户和/或资源组/订阅可在 BSL 的config中分别指定storageAccount、resourceGroup、subscriptionId详见 Azure 备份存储位置插件文档 backupstoragelocation.md。八、相关文档导航API 类型参考backupstoragelocation.md、volumesnapshotlocation.md多存储位置安装配置customize-installation.mdFile System Backupfile-system-backup.md插件机制overview-plugins.md支持的 Providersupported-providers.md源码佐证backupstoragelocation_types.go、volume_snapshot_location_type.go、server 参数定义【免费下载链接】veleroBackup and migrate Kubernetes applications and their persistent volumes项目地址: https://gitcode.com/GitHub_Trending/ve/velero创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表