news 2026/9/17 19:30:59

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Velero 安装定制实战:velero install 深度配置、特性开关、资源限制与 CLI 可选配置

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

【免费下载链接】veleroBackup and migrate Kubernetes applications and their persistent volumes项目地址: https://gitcode.com/GitHub_Trending/ve/velero

Velero 是用于备份和迁移 Kubernetes 应用及其持久化卷的开源工具。本文基于仓库文档site/content/docs/v1.11/customize-installation.md,完整覆盖velero install的全部定制维度:命名空间、身份认证机制、文件系统备份、特性开关(feature flags)、Pod 资源请求与限制、多存储位置、仅生成 YAML、自签名证书以及 CLI 自动补全等,并结合pkg/cmd/cli/install/install.gopkg/install/resources.gopkg/features/feature_flags.go等源码逐条验证参数行为与默认值,帮助你在生产环境中完成一次可复制、可运维的 Velero 定制安装。

安装时强制要求至少一个插件

velero install要求必须通过--plugins标志至少指定一个插件镜像,否则命令会直接校验失败。这一点在源码中有明确依据:install.go 的 Validate 方法 中,只有在同时使用--no-default-backup-location--use-volume-snapshots=false时才允许不提供--plugins

if o.NoDefaultBackupLocation && !o.UseVolumeSnapshots { if o.ProviderName != "" { return errors.New("--provider must be empty when using --no-default-backup-location and --use-volume-snapshots=false") } } 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 region=us-west-2 \ --snapshot-location-config region=us-west-2 \ --no-secret \ --pod-annotations iam.amazonaws.com/role=arn:aws:iam::<AWS_ACCOUNT_ID>:role/<VELERO_ROLE_NAME>

启用文件系统备份(File System Backup)

默认情况下,velero install不会安装 Velero 的 文件系统备份能力。要启用它,请加上--use-node-agent标志,它会在集群中创建 node-agent DaemonSet(BindFlags 中的定义)。

如果你之前已经运行过不带--use-node-agentvelero 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-backup=true启动参数(见 deployment.go);此后 Velero 会始终优先尝试用 FSB 备份所有卷,即使某个 backup 通过backup create --snapshot-volumes指定了卷快照也是如此。当然,你也可以在单个 backup 上设置--default-volumes-to-fs-backup(backup create 标志定义),只为该次备份强制使用 FSB。

源码中还有一条联动校验:使用--default-volumes-to-fs-backup必须先启用 node-agent(install.go):

if o.DefaultVolumesToFsBackup && !o.UseNodeAgent { return errors.New("--use-node-agent is required when using --default-volumes-to-fs-backup") }

启用特性(Feature Flags)

Velero 的新特性以 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 --features=EnableCSI

另一个例子是启用多 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/velerodaemonset/node-agent资源:

$ kubectl -n velero edit deploy/velero $ kubectl -n velero edit daemonset/node-agent

客户端特性

有些特性还需要在 Velero 客户端侧启用。有两种方式:

  1. 在每次使用 Velero CLI 的命令上附加--features参数;
  2. 通过velero client config set一次性写入客户端配置文件:
velero client config set features=EnableCSI

配置被存储在$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 colorized=false

注意:若命令行显式传入--colorized=true,会覆盖配置文件中的设置(同样来自 velero.go 的持久标志说明:"Overrides 'colorized' value from$HOME/.config/velero/config.jsonif present")。

自定义资源请求与限制

安装时,Velero 会为 Velero Pod 以及(如启用文件系统备份时的)node-agent Pod 设置默认资源请求与限制。文档给出的默认值如下:

设置Velero pod 默认值node-agent pod 默认值
CPU request500m500m
Memory request128Mi512Mi
CPU 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.limitsrequests

Velero pod

kubectl 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 pod

kubectl 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,手动修改过的该超时会恢复为默认值。

操作方式:

  1. 打开 Velero Deployment spec:

    kubectl edit deploy velero -n velero
  2. spec.template.spec.containers中添加- --fs-backup-timeout

    spec: template: spec: containers: - args: - --fs-backup-timeout=240m

配置多个备份/卷快照存储位置

Velero 支持任意数量的备份存储位置(BSL)和卷快照位置(VSL),详见 位置说明。

velero install最多只支持配置一个备份存储位置和一个卷快照位置。运行velero install之后,如需配置更多位置,请使用velero backup-location create和/或velero snapshot-location create命令并附带提供商专属配置;每个命令都支持--help查看用法。

设置默认备份存储位置或默认卷快照位置

执行备份时,Velero 需要知道把数据备份到哪里。因此配置了多个位置后,每次velero backup create都必须显式指定要使用的位置——或者预先设置默认的备份存储位置/卷快照位置。如果某个提供商只配置了一个 BSL 或 VSL,Velero 会自动把它当作默认位置。

创建备份存储位置时通过--default标志将其设为默认:

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

也可以在velero server命令上通过--default-volume-snapshot-locations标志为各卷快照提供商设置默认 VSL:

velero server --default-volume-snapshot-locations="<PROVIDER-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只支持为对象存储和卷快照配置同一个提供商。

要为卷快照使用另一个提供商,按以下步骤操作:

  1. 按照你的对象存储提供商的说明安装 Velero 服务端组件;

  2. 把卷快照提供商的插件加入 Velero(插件镜像名参见对应提供商文档):

    velero plugin add <registry/image:version>
  3. 按照该提供商文档中的配置,为它创建一个卷快照位置:

    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时需要加--validate=false选项(对应早期版本记录在 issue 2077 与 issue 2311 中的校验问题)。

使用自签名证书保护的存储提供商

如果你使用的存储提供商由自签名证书保护,可能需要让 Velero 信任该证书。velero install提供了--cacert标志指定证书包文件(BindFlags 中的定义),更多细节见 使用自签名证书保护的存储提供商。

可选的 Velero CLI 配置:Shell 自动补全

Velero CLIBashZsh提供了自动补全支持,可以显著减少输入量。

Linux 上的 Bash

通过velero completion bash生成补全脚本,并在 shell 中 source 后即可启用。该脚本依赖bash-completion组件(可用type _init_completion检测是否已安装)。

安装 bash-completion:多数包管理器都提供它,例如apt-get install bash-completionyum install bash-completion。安装后生成/usr/share/bash-completion/bash_completion主脚本;视包管理器而定,你可能需要在~/.bashrc中手动 source:

source /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 v=velero' >>~/.bashrc echo 'complete -F __start_velero v' >>~/.bashrc

两种方式等效,重新加载 shell 后补全即生效。

macOS 上的 Bash

macOS 需要注意版本兼容问题:bash-completion 分 v1 和 v2 两个版本,v1 对应 Bash 3.2(macOS 自带),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-completion@2

按安装输出提示,把以下内容加入~/.bashrc

export 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 v=velero' >>~/.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 会话中生效,把下面一行加入~/.zshrc

source <(velero completion zsh)

如果有别名,可以让补全同样支持:

echo 'alias v=velero' >>~/.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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/17 19:28:34

西门子家电官方客服电话在哪里找?正规查询方法一览

西门子家电官方客服热线&#xff1a;400 889 9999&#xff08;724 小时全天候服务&#xff09;很多用户在需要家电售后时&#xff0c;第一反应是打开搜索引擎搜 "西门子售后电话"&#xff0c;但搜索结果中混杂着不少第三方维修商的号码&#xff0c;贸然拨打容易踩坑。…

作者头像 李华
网站建设 2026/9/17 19:28:29

在北京,发生交通事故后如果出现伤残甚至死亡的严重后果,受害人及家属往往面临“赔多少、怎么争取足额索赔、如何选靠谱律所”的核心困惑,加之保险公司常以各种理由拒赔、少赔、拖赔,专业法律服务的需求尤为迫切。

北京交通事故截肢类伤残索赔核算标准如果交通事故导致受害人截肢&#xff0c;首先需通过伤残鉴定明确伤残等级&#xff0c;通常截肢情形对应伤残等级为五级至一级。根据《北京市人身损害索赔项目核算指引》&#xff0c;索赔项目包含医疗费、后续治疗费、残疾索赔金、残疾辅助器…

作者头像 李华
网站建设 2026/9/17 19:28:02

基于SpringBoot+Vue的学生请假管理系统:状态机驱动流程设计

简介&#xff1a;基于SpringBootVue的学生请假管理系统毕业设计论文&#xff0c;面向高校计算机相关专业毕业生及正在学习Java Web开发的初学者&#xff0c;解决毕业设计选题、论文撰写与系统设计参考的需求。论文完整覆盖系统分析、可行性分析、功能设计和数据库设计&#xff…

作者头像 李华
网站建设 2026/9/17 19:27:45

遭遇交通事故导致多处伤残,索赔金额的计算往往是当事人最关心的问题。根据《道路交通事故受伤人员伤残评定》(GB 18667-2002)及现行司法实践,多处伤残的索赔并非简单叠加,而是采用“伤残索赔附加指

一、多处伤残索赔金的阶梯式计算模型依据《最高人民法院关于审理人身损害索赔案件适用法律若干问题的解释》第十二条&#xff0c;残疾索赔金根据伤残等级&#xff0c;按受诉法院所在地上一年度城镇居民人均可支配收入&#xff0c;自定残之日起按二十年计算。但此处针对的是单一…

作者头像 李华
网站建设 2026/9/17 19:21:22

Step-Audio2 在线服务部署指南:vLLM-Omni 双阶段 TTS/ASR/S2ST 实践

Step-Audio2 在线服务部署指南&#xff1a;vLLM-Omni 双阶段 TTS/ASR/S2ST 实践 【免费下载链接】vllm-omni A framework for efficient model inference with omni-modality models 项目地址: https://gitcode.com/GitHub_Trending/vl/vllm-omni 导读 本指南以 vLLM-O…

作者头像 李华