Velero 安装定制实战:velero install 深度配置、特性开关、资源限制与 CLI 可选配置

发布时间:2026/9/17 19:31:05
Velero 安装定制实战:velero install 深度配置、特性开关、资源限制与 CLI 可选配置 Velero 安装定制实战velero install 深度配置、特性开关、资源限制与 CLI 可选配置【免费下载链接】veleroBackup and migrate Kubernetes applications and their persistent volumes项目地址: https://gitcode.com/GitHub_Trending/ve/veleroVelero 是用于备份和迁移 Kubernetes 应用及其持久化卷的开源工具。本文基于仓库文档site/content/docs/v1.11/customize-installation.md完整覆盖velero install的全部定制维度命名空间、身份认证机制、文件系统备份、特性开关feature flags、Pod 资源请求与限制、多存储位置、仅生成 YAML、自签名证书以及 CLI 自动补全等并结合pkg/cmd/cli/install/install.go、pkg/install/resources.go、pkg/features/feature_flags.go等源码逐条验证参数行为与默认值帮助你在生产环境中完成一次可复制、可运维的 Velero 定制安装。安装时强制要求至少一个插件velero install要求必须通过--plugins标志至少指定一个插件镜像否则命令会直接校验失败。这一点在源码中有明确依据install.go 的 Validate 方法 中只有在同时使用--no-default-backup-location和--use-volume-snapshotsfalse时才允许不提供--pluginsif o.NoDefaultBackupLocation !o.UseVolumeSnapshots { if o.ProviderName ! { return errors.New(--provider must be empty when using --no-default-backup-location and --use-volume-snapshotsfalse) } } else { if len(o.Plugins) 0 { return errors.New(--plugins flag is required) } }插件的选型与使用详见 插件概述。安装到任意命名空间默认情况下Velero 的所有 namespaced 资源都会安装到velero命名空间install.go 的 NewInstallOptions 中Namespace初始化为velerov1api.DefaultNamespace。但你可以借助--namespace标志把 Velero 安装到任意命名空间详细说明见 在自定义命名空间运行。使用非基于文件的身份认证机制默认情况下velero install期望通过--secret-file标志提供你的存储提供商凭据文件该文件内容会被创建为集群内名为cloud-credentials的 Secret见 install.go 中 AsVeleroOptions 的凭据读取逻辑。如果你使用的是不需要凭据文件的身份机制——例如 AWS 上的 kube2iam/kiam、GKE 的 Workload Identity 等——则改用--no-secret标志。从 Validate 方法 可以看到两者互斥且必须二选一switch { case o.SecretFile !o.NoSecret: return errors.New(One of --secret-file or --no-secret is required) case o.SecretFile ! o.NoSecret: return errors.New(Cannot use both --secret-file and --no-secret) }install.go 的官方命令示例 给出了一个典型的无凭据文件场景AWS IRSA通过 Pod 注解注入 IAM 角色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启用文件系统备份File System Backup默认情况下velero install不会安装 Velero 的 文件系统备份能力。要启用它请加上--use-node-agent标志它会在集群中创建 node-agent DaemonSetBindFlags 中的定义。如果你之前已经运行过不带--use-node-agent的velero install可以直接再次运行同一条命令并补上--use-node-agent从而把文件系统备份能力追加到既有安装中而无需卸载重装。让 Pod 卷备份默认走文件系统备份默认情况下velero install不会启用所有 Pod 卷默认使用文件系统备份FSB。你必须对每个带卷的 Pod 应用 Opt-in 注解Velero 才会对该 Pod 的卷使用 FSB。如果计划只使用 FSB 进行卷备份可以在安装时加--default-volumes-to-fs-backup标志从而免逐 Pod 打注解。安装时设置该标志后服务端 Deployment 会携带--default-volumes-to-fs-backuptrue启动参数见 deployment.go此后 Velero 会始终优先尝试用 FSB 备份所有卷即使某个 backup 通过backup create --snapshot-volumes指定了卷快照也是如此。当然你也可以在单个 backup 上设置--default-volumes-to-fs-backupbackup create 标志定义只为该次备份强制使用 FSB。源码中还有一条联动校验使用--default-volumes-to-fs-backup必须先启用 node-agentinstall.goif o.DefaultVolumesToFsBackup !o.UseNodeAgent { return errors.New(--use-node-agent is required when using --default-volumes-to-fs-backup) }启用特性Feature FlagsVelero 的新特性以 beta 特性发布置于特性开关feature flag之后默认不开启。特性的运行时实现见 pkg/features/feature_flags.go进程级的featureFlags集合通过IsEnabled(name)查询、Enable(...)/Disable(...)增删。特性开关常量如CSIFeatureFlag EnableCSI、APIGroupVersionsFeatureFlag EnableAPIGroupVersions定义在 pkg/apis/velero/v1/constants.go。服务端特性使用velero install --features标志启用服务端特性取值为逗号分隔的特性开关列表。例如启用 PVC 的 CSI 快照CSI 快照说明velero install --featuresEnableCSI另一个例子是启用多 API 组版本支持见 EnableAPIGroupVersions 特性文档。在 install.go 中--features的字符串按逗号切分为列表后写入安装选项deployment.go 的 WithFeatures 再将其拼接为容器启动参数if len(c.features) 0 { args append(args, fmt.Sprintf(--features%s, strings.Join(c.features, ,))) }也就是说传给velero install的特性开关会同时应用到 Velero Deployment以及如果使用了--use-node-agent时node-agent DaemonSet。要禁用某个特性把对应开关从--features中移除即可。开启/关闭特性开关需要修改 Velero Deployment 和 node-agent DaemonSet。可以通过 CLI 卸载并重装 Velero 完成也可以直接在集群内编辑deploy/velero与daemonset/node-agent资源$ kubectl -n velero edit deploy/velero $ kubectl -n velero edit daemonset/node-agent客户端特性有些特性还需要在 Velero 客户端侧启用。有两种方式在每次使用 Velero CLI 的命令上附加--features参数通过velero client config set一次性写入客户端配置文件velero client config set featuresEnableCSI配置被存储在$HOME/.config/velero/config.json。从 pkg/cmd/velero/velero.go 的全局持久标志可以看到该文件与命令行参数的合并关系Combines with values from$HOME/.config/velero/config.jsonif present。要一次性禁用全部客户端特性velero client config set features彩色 CLI 输出velero describe等命令使用彩色输出。如果运行环境不支持彩色输出Velero 会自动禁用也可以手动通过配置文件关闭velero client config set colorizedfalse注意若命令行显式传入--colorizedtrue会覆盖配置文件中的设置同样来自 velero.go 的持久标志说明Overrides colorized value from$HOME/.config/velero/config.jsonif present。自定义资源请求与限制安装时Velero 会为 Velero Pod 以及如启用文件系统备份时的node-agent Pod 设置默认资源请求与限制。文档给出的默认值如下设置Velero pod 默认值node-agent pod 默认值CPU request500m500mMemory request128Mi512MiCPU limit1000m (1 CPU)1000m (1 CPU)Memory limit512Mi1024Mi这些默认值在源码中的定义见 pkg/install/resources.go。需要注意版本差异当前仓库源码中Velero pod 默认值与文档一致500m/128Mi/1000m/512Mi而 node-agent pod 的默认值已改为0——注释明确说明 0 表示不设 request/limit使 QoS 为 BestEffort。如果你使用的是 v1.11 对应的发行版请以文档表格为准。维护者通过测试确认这些默认值在备份与恢复的资源数不超过 1000 个、文件总大小不超过 100GB 时表现良好。如果你的备份/恢复规模超过这个量级需要调大 CPU 或内存资源。维护者的测试经验是相比恢复操作备份操作通常需要更多 CPU 与内存但耗时更短具体限额取决于你资源中文件与目录的规模以及硬件条件建议自行压测确定最佳资源限额。使用文件系统备份时可能还需额外调高资源限制细节见 文件系统备份文档。安装时指定自定义资源请求与限制首次安装时可以通过 velero install 的以下标志定制对应 install.go 中的标志定义取值0被视为不设限velero install \ --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-node-agent] \ [--default-volumes-to-fs-backup] \ [--node-agent-pod-cpu-request CPU_REQUEST] \ [--node-agent-pod-mem-request MEMORY_REQUEST] \ [--node-agent-pod-cpu-limit CPU_LIMIT] \ [--node-agent-pod-mem-limit MEMORY_LIMIT]安装后调整资源请求与限制安装后可以直接修改 Velero Deployment 的 spec以及使用文件系统备份时的 node-agent DaemonSet spec中的spec.template.spec.containers.resources.limits与requests。Velero podkubectl patch deployment velero -n velero --patch \ {spec:{template:{spec:{containers:[{name: velero, resources: {limits:{cpu: 1, memory: 512Mi}, requests: {cpu: 1, memory: 128Mi}}}]}}}}node-agent podkubectl patch daemonset node-agent -n velero --patch \ {spec:{template:{spec:{containers:[{name: node-agent, resources: {limits:{cpu: 1, memory: 1024Mi}, requests: {cpu: 1, memory: 512Mi}}}]}}}}此外如果你在使用文件系统备份可能希望调大默认的 FSB 操作超时时间默认 240 分钟给更大的备份留出更多时间完成。方法是给 Velero Deployment 增加--fs-backup-timeout启动参数该参数是服务端配置项定义见 pkg/cmd/server/config/config.go安装侧的--pod-volume-operation-timeout标志也会把它写进 Deployment 的启动参数见 deployment.go。注意如果你重新运行velero install手动修改过的该超时会恢复为默认值。操作方式打开 Velero Deployment speckubectl edit deploy velero -n velero在spec.template.spec.containers中添加- --fs-backup-timeoutspec: template: spec: containers: - args: - --fs-backup-timeout240m配置多个备份/卷快照存储位置Velero 支持任意数量的备份存储位置BSL和卷快照位置VSL详见 位置说明。但velero install最多只支持配置一个备份存储位置和一个卷快照位置。运行velero install之后如需配置更多位置请使用velero backup-location create和/或velero snapshot-location create命令并附带提供商专属配置每个命令都支持--help查看用法。设置默认备份存储位置或默认卷快照位置执行备份时Velero 需要知道把数据备份到哪里。因此配置了多个位置后每次velero backup create都必须显式指定要使用的位置——或者预先设置默认的备份存储位置/卷快照位置。如果某个提供商只配置了一个 BSL 或 VSLVelero 会自动把它当作默认位置。创建备份存储位置时通过--default标志将其设为默认velero backup-location create backups-primary \ --provider aws \ --bucket velero-backups \ --config regionus-east-1 \ --default也可以在velero server命令上通过--default-volume-snapshot-locations标志为各卷快照提供商设置默认 VSLvelero server --default-volume-snapshot-locationsPROVIDER-NAME:LOCATION-NAME,PROVIDER2-NAME:LOCATION2-NAME安装时不配置默认备份存储位置如果需要在安装时不创建默认备份存储位置即不指定--bucket或--provider必须附加--no-default-backup-location标志作为确认项。Validate 方法 对它的约束包括不能同时使用--bucket、--prefix、--backup-location-config在未指定该标志时--provider和--bucket均为必填。安装额外的卷快照提供商Velero 允许卷快照使用的提供商与对象存储提供商不同——例如对象存储用 AWS S3块卷快照用 Portworx。但velero install只支持为对象存储和卷快照配置同一个提供商。要为卷快照使用另一个提供商按以下步骤操作按照你的对象存储提供商的说明安装 Velero 服务端组件把卷快照提供商的插件加入 Velero插件镜像名参见对应提供商文档velero plugin add registry/image:version按照该提供商文档中的配置为它创建一个卷快照位置velero snapshot-location create NAME \ --provider PROVIDER-NAME \ [--config PROVIDER-CONFIG]仅生成 YAML默认情况下velero install会生成一组定制过的 Kubernetes 配置YAML并 apply 到集群。要只生成而不 apply使用--dry-run -o yaml标志Run 方法中 DryRun 分支 在打印资源后直接返回不发送任何请求。这在需要自定义定制、集成 GitOps 工作流时非常有用。如果要在 Kubernetes 1.14.x 或更早版本上应用生成的配置使用kubectl apply时需要加--validatefalse选项对应早期版本记录在 issue 2077 与 issue 2311 中的校验问题。使用自签名证书保护的存储提供商如果你使用的存储提供商由自签名证书保护可能需要让 Velero 信任该证书。velero install提供了--cacert标志指定证书包文件BindFlags 中的定义更多细节见 使用自签名证书保护的存储提供商。可选的 Velero CLI 配置Shell 自动补全Velero CLI为Bash和Zsh提供了自动补全支持可以显著减少输入量。Linux 上的 Bash通过velero completion bash生成补全脚本并在 shell 中 source 后即可启用。该脚本依赖bash-completion组件可用type _init_completion检测是否已安装。安装 bash-completion多数包管理器都提供它例如apt-get install bash-completion或yum install bash-completion。安装后生成/usr/share/bash-completion/bash_completion主脚本视包管理器而定你可能需要在~/.bashrc中手动 sourcesource /usr/share/bash-completion/bash_completion重新加载 shell 后用type _init_completion验证是否安装成功。启用 Velero CLI 补全任选其一在~/.bashrc中 source 补全脚本echo source (velero completion bash) ~/.bashrc把补全脚本写入/etc/bash_completion.d目录bash-completion 会自动 source 该目录下所有脚本velero completion bash /etc/bash_completion.d/velero如果给 velero 建了别名可以让补全同样作用于别名echo alias vvelero ~/.bashrc echo complete -F __start_velero v ~/.bashrc两种方式等效重新加载 shell 后补全即生效。macOS 上的 BashmacOS 需要注意版本兼容问题bash-completion 分 v1 和 v2 两个版本v1 对应 Bash 3.2macOS 自带v2 对应 Bash 4.1。Velero 的补全脚本在 bash-completion v1 Bash 3.2 下无法正确工作必须在 macOS 上安装并使用 Bash 4.1 以及 bash-completion v2。安装 bash-completion v2先用type _init_completion检测是否已有 v2如没有可用 Homebrew 安装brew install bash-completion2按安装输出提示把以下内容加入~/.bashrcexport BASH_COMPLETION_COMPAT_DIR/usr/local/etc/bash_completion.d [[ -r /usr/local/etc/profile.d/bash_completion.sh ]] . /usr/local/etc/profile.d/bash_completion.sh重新加载 shell并用type _init_completion验证。启用 Velero CLI 补全任选其一在~/.bashrc中 source 补全脚本echo source (velero completion bash) ~/.bashrc把补全脚本写入/usr/local/etc/bash_completion.d目录velero completion bash /usr/local/etc/bash_completion.d/velero别名支持echo alias vvelero ~/.bashrc echo complete -F __start_velero v ~/.bashrc如果用 Homebrew 安装 velero补全脚本通常已存在于/usr/local/etc/bash_completion.d/velero则无需额外操作Homebrew 安装的 bash-completion v2 会 sourceBASH_COMPLETION_COMPAT_DIR目录下的所有文件。Zsh 自动补全通过velero completion zsh生成 Zsh 补全脚本。要在所有 shell 会话中生效把下面一行加入~/.zshrcsource (velero completion zsh)如果有别名可以让补全同样支持echo alias vvelero ~/.zshrc echo complete -F __start_velero v ~/.zshrc重新加载 shell 后补全即生效。若报错complete:13: command not found: compdef在~/.zshrc开头加入autoload -Uz compinit compinit更多安装选项运行velero install --help可查看完整的安装选项。从 install.go 的 BindFlags 可以看到除本文覆盖的选项外velero install还支持--restore-only只恢复模式、--wait等待 Deployment 就绪、--image自定义镜像、--prefix桶内前缀、--backup-location-config/--snapshot-location-config位置配置键值对、--pod-annotations/--pod-labels/--sa-annotations、--use-volume-snapshots、--uploader-type当前支持 Kopia、--concurrent-backups、--item-block-worker-count、--node-agent-configmap、--schedule-skip-immediately、--server-priority-class-name/--node-agent-priority-class-name等大量选项可按需组合。至此本文完整覆盖了 Velero 安装定制文档的全部主题插件要求、命名空间、身份认证、文件系统备份、特性开关、资源限制与--fs-backup-timeout、多存储位置与默认位置、无默认 BSL 安装、额外卷快照提供商、仅生成 YAML、自签名证书以及 CLI 自动补全。配合 pkg/cmd/cli/install/install.go 与 pkg/install/resources.go 中的参数定义和默认值你可以把本文每一条配置命令直接落到实际的velero install调用中并依据源码校验逻辑预判参数组合的合法性。【免费下载链接】veleroBackup and migrate Kubernetes applications and their persistent volumes项目地址: https://gitcode.com/GitHub_Trending/ve/velero创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询