ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Ark(Velero 前身)CLI 根命令 `ark` 完全参考:全局参数、凭据解析与 backup/restore/schedule 子命令体系

Ark(Velero 前身)CLI 根命令 `ark` 完全参考:全局参数、凭据解析与 backup/restore/schedule 子命令体系 ArkVelero 前身CLI 根命令ark完全参考全局参数、凭据解析与 backup/restore/schedule 子命令体系【免费下载链接】veleroBackup and migrate Kubernetes applications and their persistent volumes项目地址: https://gitcode.com/GitHub_Trending/ve/velero本文是 Kubernetes 备份恢复工具 Ark即今日 Velero 的前身命令行界面根命令ark的深度技术指南。文章以仓库中的官方 CLI 参考文档ark.md为骨架完整讲解根命令的职责定位、kubectl 式双语法命令模型、全部全局选项含日志与 kubeconfig 相关参数、集群凭据解析顺序以及 backup / restore / schedule / plugin 等子命令的组织方式并结合当前仓库的根命令注册源码pkg/cmd/velero/velero.go印证其底层实现。读完本文你将能够熟练查阅与使用ark全系命令理解其参数设计逻辑并能在升级到 Velero 后无缝迁移命令习惯。命令定位Ark 是什么根据 ark.md 的 Synopsis 说明Heptio Ark is a tool for managing disaster recovery, specifically for Kubernetes cluster resources. It provides a simple, configurable, and operationally robust way to back up your application state and associated data.Ark 是一款面向 Kubernetes 集群资源的灾备管理工具以简单、可配置、运维健壮的方式备份应用状态及其关联数据。这一描述在当前仓库的源码中仍然原样保留——pkg/cmd/velero/velero.go 中根命令的Short与Long描述与此完全一致只是命令名从ark演进为veleroc : cobra.Command{ Use: name, Short: Back up and restore Kubernetes cluster resources., Long: Velero is a tool for managing disaster recovery, specifically for Kubernetes cluster resources. It provides a simple, configurable, and operationally robust way to back up your application state and associated data. If youre familiar with kubectl, Velero supports a similar model, allowing you to execute commands such as velero get backup and velero create schedule. The same operations can also be performed as velero backup get and velero schedule create., ... }也就是说本文所讲的ark根命令正是今天velero命令的早期形态两者命令体系一脉相承。kubectl 式双语法命令模型Ark 在交互模型上刻意对齐 kubectl同一操作提供两种等价的书写方式见 ark.md 与当前源码Long描述操作名词优先语法动词优先语法查看备份ark get backupark backup get创建定时备份ark create scheduleark schedule create查看定时备份ark get scheduleark schedule get两种语法在功能上完全等价开发者可按个人习惯选择。这种设计在 CLI 参考目录中得到了完整体现目录下同时存在ark_get_backups.md与ark_backup_get.md等成对文档见 site/content/docs/v0.6.0/cli-reference。全局选项Options详解ark根命令自身不直接执行备份/恢复操作而是作为所有子命令的入口。根命令上注册的全局选项会作为 PersistentFlags 被全部子命令继承当前源码中c.PersistentFlags()的注册方式印证了这一点。ark.md 中完整列出的根命令选项如下其中绝大多数源自 Kubernetes 生态标准的 klog 日志库--alsologtostderr log to standard error as well as files -h, --help help for ark --kubeconfig string Path to the kubeconfig file to use to talk to the Kubernetes apiserver. If unset, try the environment variable KUBECONFIG, as well as in-cluster configuration --log_backtrace_at traceLocation when logging hits line file:N, emit a stack trace (default :0) --log_dir string If non-empty, write log files in this directory --logtostderr log to standard error instead of files --stderrthreshold severity logs at or above this threshold go to stderr (default 2) -v, --v Level log level for V logs --vmodule moduleSpec comma-separated list of patternN settings for file-filtered logging各选项的语义与典型使用场景如下选项类型/默认值说明--kubeconfig stringstring指定用于连接 Kubernetes apiserver 的 kubeconfig 文件路径。若未设置依次尝试KUBECONFIG环境变量与 in-cluster 配置在 Pod 内运行时。这是所有涉及集群交互的子命令backup、restore、schedule、server 等的关键参数-h, --helpbool打印ark帮助信息。CLI 参考目录的 README 特别指出这些文档枚举的信息同样可以通过 CLI 自身的--help标志获取即ark --help或ark 子命令 --help永远是最新的权威参考--logtostderrbool将日志输出到标准错误流stderr而非文件。容器化运行场景下通常开启便于日志采集--alsologtostderrbool除写入日志文件外同时将日志输出到标准错误流--log_dir stringstring非空时日志文件将写入该目录--log_backtrace_at traceLocationstring默认:0当日志命中file:N文件:行号位置时额外输出堆栈跟踪用于精准定位特定代码路径的日志来源--stderrthreshold severityseverity默认2达到或超过该严重级别的日志会同时写入 stderr。klog 的 severity 数值约定为0INFO、1WARNING、2ERROR、3FATAL因此默认值2表示 ERROR 及以上级别进入 stderr-v, --v LevelLevel设置 V 日志分级详细日志的级别级别越高输出越详尽常用于排查深层调用链--vmodule moduleSpecmoduleSpec以逗号分隔的patternN列表按文件模式过滤设置 V 日志级别例如gopher*3实现只对指定文件加大日志级别的精细化调试从源码结构看这些日志参数均由 klog 提供并统一挂载到根命令。当前实现中pkg/cmd/velero/velero.go 通过klog.InitFlags(flag.CommandLine)初始化 klog 标志并借助c.PersistentFlags().AddGoFlagSet(flag.CommandLine)将整套日志标志注入根命令的持久化标志集从而保证所有子命令共享同一套日志行为。其中还有一处值得注意的细节源码显式设置了legacy_stderr_threshold_behaviorfalse并默认stderrthresholdINFO以保证--logtostderrtrue默认时--stderrthreshold依旧生效——这是对 klog 历史行为的兼容性修正。集群凭据解析顺序cli-reference/README.md 明确了 Ark 客户端查找 Kubernetes 集群凭据的优先级这一约定贯穿所有子命令--kubeconfig命令行标志$KUBECONFIG环境变量In-cluster 凭据——仅当 Ark 运行在 Pod 内部时可用。理解这一顺序对排查客户端连不上集群类问题很有帮助例如设置了KUBECONFIG却仍然连接失败需要检查是否显式传入了--kubeconfig覆盖了环境变量。当前仓库的pkg/client包中NewFactory与LoadConfig的实现在逻辑上延续了这一约定并额外支持从$HOME/.config/velero/config.json读取客户端配置见 pkg/cmd/velero/velero.go 与 pkg/cmd/velero/velero.go。运行客户端推荐使用容器化方式cli-reference/README.md 建议直接使用容器镜像运行客户端而非自行编译二进制。在 v0.6.0 时期官方推荐的 alias 写法如下alias arkdocker run --rm -u $(id -u) -v $(dirname $KUBECONFIG):/kubeconfig -e KUBECONFIG/kubeconfig/$(basename $KUBECONFIG) gcr.io/heptio-images/ark:latest该 alias 的设计要点值得拆解--rm容器退出后自动清理避免遗留容器-u $(id -u)以当前用户 UID 运行避免文件权限问题-v $(dirname $KUBECONFIG):/kubeconfig将 kubeconfig 所在目录挂载进容器-e KUBECONFIG/kubeconfig/$(basename $KUBECONFIG)将容器内的KUBECONFIG环境变量指向挂载路径使凭据解析顺序中的第 2 级生效。只要本机设置了KUBECONFIG该 alias 会自动完成集群凭据的注入无需额外配置。若希望以二进制方式运行可参考仓库根目录的 Makefile 提供的构建入口或以源码方式执行cmd/velero/velero.go当前仓库中该入口会按可执行文件名构造根命令并执行见 cmd/velero/velero.go。子命令体系从 SEE ALSO 看完整命令树ark.md 的 SEE ALSO 一节完整枚举了根命令下的子命令这是理解 CLI 能力边界的权威索引子命令用途参考文档ark backup备份相关操作create / get / describe / download / logsark_backup.mdark create创建 ark 资源backup / restore / scheduleark_create.mdark describe描述 ark 资源backups / restores / schedulesark_describe.mdark get获取 ark 资源backups / restores / schedulesark_get.mdark plugin插件管理add / removeark_plugin.mdark restore恢复相关操作create / delete / describe / get / logsark_restore.mdark schedule定时备份相关操作create / delete / describe / getark_schedule.mdark server启动 ark 服务端ark_server.mdark version打印 ark 版本及关联镜像ark_version.md对照当前仓库源码 pkg/cmd/velero/velero.go 中c.AddCommand(...)注册的子命令集合backup、schedule、restore、server、version、get、install、describe、create、plugin、delete、completion、repo、bug、debug 等可以看到根命令→子命令→三级命令的树状组织方式被完整保留并持续扩展。各子命令包如 pkg/cmd/cli/backup/backup.go 中的NewCommand(f client.Factory)均以工厂模式接收client.Factory从而共享 kubeconfig 解析与客户端构建逻辑。核心子命令详解backup createark backup create等价形式ark create backup是使用频率最高的命令其完整参数见 ark_backup_create.mdark backup create NAME [flags]参数类型/默认值说明--exclude-namespaces stringArraystringArray从备份中排除的命名空间列表--exclude-resources stringArraystringArray从备份中排除的资源格式为resource.group如storageclasses.storage.k8s.io--include-cluster-resources optionalBool[true]optionalBool默认true是否在备份中包含集群范围资源--include-namespaces stringArraystringArray默认*要纳入备份的命名空间*表示全部--include-resources stringArraystringArray要纳入备份的资源格式为resource.group*表示全部资源--label-columns stringArraystringArray以逗号分隔的标签列用于在输出表格中展示--labels mapStringStringmapStringString应用到备份上的标签-o, --output stringstring输出格式table/json/yaml对 create 命令而言仅展示对象而不发送到服务端dry-run 语义-l, --selector labelSelectorlabelSelector默认none仅备份匹配该标签选择器的资源--show-labelsbool在最后一列显示标签--snapshot-volumes optionalBool[true]optionalBool默认true是否在备份中对 PersistentVolume 做快照--ttl durationduration默认720h0m0s30 天备份可被垃圾回收前保留的时间核心子命令详解restore create 与 schedule createark restore create等价ark create restore从指定备份执行恢复参数表见 ark_restore_create.md。它在 backup create 的 include/exclude/selector 参数基础上额外提供两个恢复专属选项--namespace-mappings mapStringString命名空间映射格式为src1:dst1,src2:dst2,...用于将备份中的命名空间恢复到目标命名空间例如多环境迁移场景--restore-volumes optionalBool[true]是否从快照恢复卷。ark schedule create等价ark create schedule则用于建立按 cron 表达式触发的周期性备份参数表见 ark_schedule_create.md。它与ark backup create共享绝大部分过滤参数唯一新增的关键参数是--schedule stringcron 表达式指定该备份的周期调度规则。服务端与版本查询ark server启动服务端进程支持--log-level参数合法值为debug、info、warning、error、fatal、panic默认info见 ark_server.md。ark version用于打印 Ark 版本及其关联镜像见 ark_version.md在确认环境版本与镜像匹配时非常有用。从源码理解命令注册机制当前仓库中客户端入口 cmd/velero/velero.go 的核心逻辑只有三步baseName : filepath.Base(os.Args[0]) err : velero.NewCommand(baseName).Execute() cmd.CheckError(err)即根据可执行文件名构造根命令并执行——这也解释了为何同一个二进制通过软链接命名为ark或velero时帮助信息中的命令名会随之变化。根命令构造函数 pkg/cmd/velero/velero.go 完成了以下工作读取客户端配置文件支持 feature 开关与彩色输出配置定义根命令的 Short/Long 描述与本文所讲 ark 文档一致通过client.NewFactory(name, config)构建工厂并绑定持久化标志含--kubeconfig注册全部子命令backup、schedule、restore、server、version、get、install、describe、create、plugin 等初始化 klog 并注入全部日志相关标志。其中第 3 步的client.Factory是命令体系可扩展性的关键每个子命令通过NewCommand(f client.Factory)拿到统一的客户端构造能力从而保证凭据解析顺序与日志行为在所有子命令间完全一致。结语与进一步阅读ark根命令是 Ark/Velero 客户端命令体系的入口与中枢它定义了 kubectl 式双语法交互模型、统一的全局选项尤其是 kubeconfig 与 klog 日志参数、三级命令树以及贯穿所有子命令的凭据解析约定。这套设计在演进为velero后依然保持稳定当前仓库源码 pkg/cmd/velero/velero.go 中的实现与本文所讲文档一一对应。建议进一步阅读的仓库资料cli-reference/README.md客户端运行方式与凭据解析顺序总览ark_backup.md 及其子命令文档备份命令族全参数ark_restore.md 及其子命令文档恢复命令族全参数ark_schedule.md 及其子命令文档定时备份命令族全参数pkg/cmd/velero/velero.go当前版本根命令注册的权威源码。无论你使用的是历史版本ark还是当前的velero命令掌握本文所述的命令模型、全局参数与子命令组织方式都能帮助你高效、准确地完成 Kubernetes 集群资源的备份与恢复操作。【免费下载链接】veleroBackup and migrate Kubernetes applications and their persistent volumes项目地址: https://gitcode.com/GitHub_Trending/ve/velero创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表