拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Velero 安装部署完全指南:云厂商、本地环境与 Helm 安装实战

Velero 安装部署完全指南云厂商、本地环境与 Helm 安装实战【免费下载链接】veleroBackup and migrate Kubernetes applications and their persistent volumes项目地址: https://gitcode.com/GitHub_Trending/ve/velero导读本文基于 Velero 官方安装总览文档系统讲解在 Kubernetes 集群中安装与部署 Velero 的完整路径既包括面向 AWS、GCP、Azure、IBM Cloud 等云厂商的velero install一键安装方式也包括面向本地/自建集群的对象存储后端如 Minio与卷备份方案选型同时覆盖资源限额定制、自定义命名空间、Helm Chart 安装以及卸载清理等运维要点。读完本文你将能够根据自己的存储与卷快照需求独立完成 Velero 服务器端的安装、验证与卸载并跑通基本的备份/恢复示例。一、安装前的整体规划两条主路径Velero 的服务器端部署主要有两条路径选择取决于你的集群与存储环境云厂商环境Cloud provider集群运行在 AWS / GCP / Azure 等公有云上备份数据存放于云厂商的对象存储卷数据可通过云厂商的原生块存储快照完成。此时使用 Velero 客户端内置的install命令即可该命令会针对每个受支持的云厂商自动生成对应的安装资源。本地环境On-premises集群自建如裸机、vSphere、OpenShift 等需要自行选定一个对象存储后端保存备份数据并单独选定卷数据备份方案原生快照插件或 restic 文件级备份。无论哪条路径安装的本质都是向集群下发一组 Kubernetes 资源所有必需的 CRD、Velero Deployment、相关 DaemonSet、cloud-credentialsSecret以及默认的 BackupStorageLocation备份存储位置和 VolumeSnapshotLocation卷快照位置。这一逻辑可以从安装命令的实现源码得到印证pkg/cmd/cli/install/install.go 中NewCommand的Long描述明确指出 All required CustomResourceDefinitions will be installed to the server, as well as the Velero Deployment and associated node-agent DaemonSet。二、云厂商环境安装velero install命令详解2.1 基本命令形态对于受支持的云厂商使用如下命令安装 Velerovelero install \ --provider YOUR_PROVIDER \ --bucket YOUR_BUCKET \ [--secret-file PATH_TO_FILE] \ [--no-secret] \ [--backup-location-config] \ [--snapshot-location-config] \ [--namespace] \ [--use-volume-snapshots] \ [--use-restic] \ [--pod-annotations]各核心参数说明结合 pkg/cmd/cli/install/install.go 中BindFlags的实现参数必填说明--provider是备份存储与卷存储的提供商名称如aws、gcp、azure--bucket是备份数据存放的对象存储桶名称--secret-file二选一云厂商凭证文件路径未指定时必须使用--no-secret确认--no-secret二选一声明不创建 Secret与--secret-file互斥--backup-location-config否BackupStorageLocation 的键值对配置格式key1value1,key2value2--snapshot-location-config否VolumeSnapshotLocation 的键值对配置--namespace否安装目标命名空间默认velero--use-volume-snapshots否是否自动创建快照位置默认true--use-restic否是否同时安装 restic文件级卷备份DaemonSet--pod-annotations否附加到 Velero Pod 上的注解格式key1value1,key2value2从源码看install命令还支持--image指定 Velero 镜像、--prefix桶内数据前缀、--plugins插件容器镜像、--cacert对象存储 TLS 校验证书、--dry-run、--wait等待 Deployment 就绪等大量可选参数具体可参见 install.go。2.2 凭证处理--secret-file与--no-secret提供--secret-file时安装命令会读取该文件内容并创建名为cloud-credentials的 Secret源码见 install.go通过os.ReadFile读取后存入secretData。使用节点级 IAM 策略node-based IAM policies如 AWS IRSA / EKS Pod Identity时不需要凭证文件但必须显式加上--no-secret进行确认。两者同时使用或同时缺失都会在Validate阶段直接报错见 install.go。2.3 各云厂商的具体安装文档Run Velero on AWSRun Velero on GCPRun Velero on AzureUse IBM Cloud Object Store as Veleros storage destination2.4 常见云厂商安装示例以下示例来自 install.go 中Example字段可直接作为实操参考# GCP使用服务账号文件作为凭证 velero install --provider gcp --plugins velero/velero-plugin-for-gcp:v1.0.0 \ --bucket mybucket --secret-file ./gcp-service-account.json # AWS指定 region 并创建默认备份/快照位置 velero install --provider aws --plugins velero/velero-plugin-for-aws:v1.0.0 \ --bucket backups --secret-file ./aws-iam-creds \ --backup-location-config regionus-east-2 \ --snapshot-location-config regionus-east-2 # AWS使用节点级 IAM 角色IRSA无需凭证文件 velero install --provider aws --plugins velero/velero-plugin-for-aws:v1.0.0 \ --bucket backups --backup-location-config regionus-west-2 \ --snapshot-location-config regionus-west-2 --no-secret \ --pod-annotations iam.amazonaws.com/rolearn:aws:iam::AWS_ACCOUNT_ID:role/VELERO_ROLE_NAME # Azure使用存储账户参数 velero install --provider azure --plugins velero/velero-plugin-for-microsoft-azure:v1.0.0 \ --bucket $BLOB_CONTAINER --secret-file ./credentials-velero \ --backup-location-config resourceGroup$AZURE_BACKUP_RESOURCE_GROUP,storageAccount$AZURE_STORAGE_ACCOUNT_ID \ --snapshot-location-config apiTimeoutYOUR_TIMEOUT2.5 关于卷快照的注意事项默认情况下--use-volume-snapshots为true安装时会在所有支持快照的云厂商下创建VolumeSnapshotLocation。当使用 restic 且所选存储提供商目前不支持 Velero 快照时务必加--use-volume-snapshotsfalse避免安装时生成一个用不到的VolumeSnapshotLocation。源码中对应的校验逻辑是当--use-volume-snapshotsfalse时--snapshot-location-config必须为空见 install.go。快照位置的完整介绍参见 Volume Snapshot Providers。2.6 预览将要应用的 YAML--dry-run -o yaml如果不想立刻把资源提交到集群可以先用 dry-run 预览velero install将生成的完整 YAMLvelero install --provider YOUR_PROVIDER --bucket YOUR_BUCKET \ --secret-file PATH_TO_FILE --dry-run -o yaml--dry-run的实现逻辑是先生成unstructured.UnstructuredList资源列表并打印然后直接返回而不调用install.Install下发到集群见 install.go。这非常适合作为复杂定制安装的起点将生成的 YAML 保存后手工修改或交给 Helm Chart 管理。三、本地On-premises环境安装在自建集群中运行 Velero 需要按两步决策第一步选择对象存储后端。Velero 通过插件系统支持多种备份存储平台完整兼容清单见 Compatible Storage Providers。其中 Velero 团队正式维护的备份存储提供商包括 AWS S3、Azure Blob Storage、Google Cloud Storage用户已验证可用的 S3 兼容提供商包括 IBM Cloud、Minio、Ceph RADOS v12.2.7、DigitalOcean、Quobyte、NooBaa、Oracle Cloud 等。如果你希望备份数据保留在本地、且当前没有其他提供 S3 兼容对象存储 API 的平台Minio是最直接的选项仓库中提供了可直接部署的示例examples/minio/00-minio-deployment.yaml。第二步选择卷数据备份方案。如果需要对持久卷数据进行备份可选方案有两类原生快照插件如果存储平台提供快照能力且有对应 Velero 插件则优先使用原生快照。例如使用 Portworx 作为持久化存储时可安装 Portworx 的 Velero 插件在 Velero 备份中直接获得原生 Portworx 快照。restic 文件级备份如果存储平台没有可用的原生快照插件则使用 Velero 内置的 restic 集成它提供与平台无关的卷数据备份能力几乎支持所有类型的 Kubernetes 卷如 EFS、AzureFile、NFS、emptyDir、local 等hostPath 卷除外。restic 的安装通过velero install --use-restic完成详细配置见 restic instructions。需要注意restic 集成需要 Kubernetes 的 MountPropagation 特性Kubernetes v1.10.0 及以后默认开启且部分基于 Kubernetes 的 PaaS/CaaS 平台如 RancherOS、OpenShift需要对 restic DaemonSet 的 hostPath 和特权模式做额外修改。四、自定义配置默认快照位置与自定义命名空间4.1 指定默认卷快照位置无论云厂商还是本地环境当同一个卷提供商配置了多个卷快照位置VolumeSnapshotLocation时可以通过在 Velero Deployment YAML 中设置 server 标志来指定备份时使用的默认位置。具体做法参考各云厂商的文档AWS、GCP、Azure。4.2 自定义命名空间安装Velero 默认安装到velero命名空间但可以运行在任何命名空间velero install --bucket YOUR_BUCKET --provider YOUR_PROVIDER --namespace YOUR_NAMESPACE安装完成后为了让所有客户端命令都指向该命名空间可执行velero client config set namespaceNAMESPACE_VALUE完整说明见 Run in custom namespace。五、Velero 资源需求Resource Requirements与限额定制5.1 默认资源请求与限制Velero 官方安装总览文档v1.1.0给出的默认值为Velero Deployment 请求 500m CPU / 128Mi 内存限制为 1000m CPU / 256Mi 内存。需要说明的是当前仓库源码 pkg/install/resources.go 中的默认值已演进为资源默认值DefaultVeleroPodCPURequest500mDefaultVeleroPodMemRequest128MiDefaultVeleroPodCPULimit1000mDefaultVeleroPodMemLimit512Mi即当前版本的 Velero Pod 内存限制默认值为 512Miv1.1.0 文档记录为 256MiCPU 请求/限制保持一致。安装时以实际仓库默认值为准。restic Pod当前版本对应 node-agent DaemonSet默认不设置资源请求与限制因为其 CPU/内存消耗高度依赖于被备份卷的大小。如果你的环境对 Pod 资源有配额管控需要显式设置。5.2 通过安装参数自定义资源限额如果默认值不满足需求可在velero install命令中设置以下标志velero install \ --provider YOUR_PROVIDER \ --bucket YOUR_BUCKET \ --secret-file PATH_TO_FILE \ --velero-pod-cpu-request CPU_REQUEST \ --velero-pod-mem-request MEMORY_REQUEST \ --velero-pod-cpu-limit CPU_LIMIT \ --velero-pod-mem-limit MEMORY_LIMIT \ [--use-restic] \ [--restic-pod-cpu-request CPU_REQUEST] \ [--restic-pod-mem-request MEMORY_REQUEST] \ [--restic-pod-cpu-limit CPU_LIMIT] \ [--restic-pod-mem-limit MEMORY_LIMIT]这些标志的取值遵循 Kubernetes 资源需求量格式如500m、128Mi。从源码看install.go当前版本中 restic 相关标志已对应演进为--node-agent-pod-cpu-request、--node-agent-pod-mem-request、--node-agent-pod-cpu-limit、--node-agent-pod-mem-limit且0会被视为无界unbounded。安装时最终通过kubeutil.ParseCPUAndMemoryResources解析并写入 Deployment/DaemonSet 的资源定义见 install.go。一个完整的资源定制示例velero install --provider gcp --plugins velero/velero-plugin-for-gcp:v1.0.0 \ --bucket gcp-backups --secret-file ./gcp-creds.json \ --velero-pod-cpu-request1000m --velero-pod-cpu-limit5000m \ --velero-pod-mem-request512Mi --velero-pod-mem-limit1024Mi六、通过 Helm Chart 安装对于更复杂、需要版本化管理的安装需求除了直接使用生成的 YAML还可以使用 Helm Chart 安装helm install --set-file credentials.secretContents.cloud./credentials-velero stable/velero关键点使用 Helm 安装时提供商的凭证信息需要以追加的方式写入 values最简单的方式是使用--set-file参数Helm 2.10 及更高版本支持。credentials-velero文件的内容与创建方式参见对应云厂商的文档。七、卸载 Velero如需彻底从集群中移除 Velero执行以下命令删除velero install创建的全部资源kubectl delete namespace/velero clusterrolebinding/velero kubectl delete crds -l componentvelero第一条删除命名空间与集群角色绑定第二条通过标签选择器componentvelero清理所有 Velero 相关的 CustomResourceDefinitions。八、安装验证实战备份与恢复示例安装完成后可以用仓库自带的示例应用快速验证备份/恢复流程。示例清单位于 examples/nginx-app包含无持久卷版本 base.yaml 与带持久卷版本 with-pv.yaml。8.1 基础示例无 PersistentVolumes启动示例 nginx 应用创建nginx-example命名空间、2 副本 Deployment 与 LoadBalancer Servicekubectl apply -f examples/nginx-app/base.yaml创建备份velero backup create nginx-backup --include-namespaces nginx-example模拟灾难删除整个命名空间kubectl delete namespaces nginx-example等待命名空间被完全删除。恢复丢失的资源velero restore create --from-backup nginx-backup8.2 快照示例带 PersistentVolumes注意使用 Azure 时Kubernetes 版本必须为 1.7.2 或更高才能支持托管磁盘managed disks的 PV 快照。启动带持久卷的示例应用该 YAML 包含一个 50Mi 的 PVC、挂载该 PVC 的 nginx Deployment以及通过pre.hook.backup.velero.io/post.hook.backup.velero.io注解配置的 fsfreeze 备份钩子kubectl apply -f examples/nginx-app/with-pv.yaml创建带 PV 快照的备份velero backup create nginx-backup --include-namespaces nginx-example模拟灾难kubectl delete namespaces nginx-example由于动态供应 PV 的默认回收策略reclaim policy是Delete上述命令会触发云厂商删除 PV 背后的磁盘。删除是异步的可能需要一些时间。在继续下一步之前请到云厂商控制台确认磁盘已不存在。恢复丢失的资源velero restore create --from-backup nginx-backup两个示例的关键区别在于无 PV 示例只验证资源对象的备份/恢复带 PV 示例则同时验证卷数据快照与恢复恢复后 PVC 会重新绑定到新供应的磁盘并回填快照数据。九、进一步参考安装问题排查debugging-install安装失败的常见排查手段兼容存储提供商与卷快照提供商矩阵安装前选型的重要依据restic 集成说明文件级卷备份的完整配置与平台限制自定义命名空间非默认命名空间安装安装命令源码全部install参数的实现细节安装资源默认值源码Velero / node-agent Pod 的默认资源值Minio 部署示例本地对象存储后端的快速起步配置【免费下载链接】veleroBackup and migrate Kubernetes applications and their persistent volumes项目地址: https://gitcode.com/GitHub_Trending/ve/velero创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门