ARTICLE DETAIL

资讯详情

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

Velero `ark backup describe` 命令完全指南:深入解析备份描述、标签筛选与源码实现

Velero `ark backup describe` 命令完全指南:深入解析备份描述、标签筛选与源码实现 Veleroark backup describe命令完全指南深入解析备份描述、标签筛选与源码实现【免费下载链接】veleroBackup and migrate Kubernetes applications and their persistent volumes项目地址: https://gitcode.com/GitHub_Trending/ve/veleroark backup describe是 ArkVelero 的前身版本 v0.7.0 时代提供的用于查看备份详细信息的 CLI 命令它能够以人类可读的格式输出单个或多个 Backup 对象的完整配置与执行状态。本文以仓库中 ark_backup_describe.md 官方参考文档为核心结合当前仓库中该命令的源码实现describe.go与输出格式化代码backup_describer.go完整讲解命令语法、全部参数、输出内容结构及底层实现原理帮助读者精准定位备份执行情况、排查备份失败原因。命令概览用一条命令看懂一次备份的全貌在 v0.7.0 版本中Ark 同时提供ark backup describe与ark describe backups两种等价写法两者的参考文档分别位于 ark_backup_describe.md 和 ark_describe_backups.md它们都是对备份资源的describe操作。该命令归属于ark backup命令组见 ark_backup.md其定位是将存储于 Kubernetes 集群中的 Backup 自定义资源以格式化文本输出到终端内容涵盖备份的元数据、资源筛选范围、存储位置、TTL、快照信息以及备份执行过程中的错误与警告。该命令的 Synopsis 如下ark backup describe [NAME1] [NAME2] [NAME...] [flags]命令接受一个或多个备份名称作为位置参数若不提供任何名称则默认列出describe当前命名空间下所有备份。适用的环境说明本文涉及的命令语法与参数以 v0.7.0 文档为准当时 CLI 二进制名称为ark默认命名空间为heptio-ark见下文的-n, --namespace参数。当前仓库已演进出velero命令与velero backup describe的现代形态其实现代码describe.go可在当前仓库pkg/cmd/cli/backup/目录下找到读者可以对照理解命令的演进脉络。参数详解Options 与全局继承参数ark backup describe本身只定义了两个命令级参数其余为从父命令继承的全局参数。命令专属参数参数简写类型说明--help-h-显示 describe 命令的帮助信息--selector-lstring仅展示匹配该 label selector 的备份项例如-l appnginx这两个参数在当前仓库的现代实现中依然存在见 describe.goc.Flags().StringVarP(listOptions.LabelSelector, selector, l, listOptions.LabelSelector, Only show items matching this label selector.)从源码可见--selector的取值会被解析为 Kubernetes label selector 并通过kbClient.List执行过滤parsedSelector, err : labels.Parse(listOptions.LabelSelector) cmd.CheckError(err) err kbClient.List(context.Background(), backups, controllerclient.ListOptions{LabelSelector: parsedSelector, Namespace: f.Namespace()})因此当不指定备份名称时命令会列出命名空间下全部 Backup配合--selector可以只查看打有特定标签的备份。注意--selector仅在未指定备份名称即走列表分支时生效一旦在参数中给出备份名称命令将逐个按名称精确读取kbClient.Get对应 Backup 对象。Options inherited from parent commands继承的全局参数这些参数由 Ark 根命令及日志框架glog提供describe子命令会自动继承参数说明--alsologtostderr同时将日志输出到标准错误和日志文件--kubeconfig string用于连接 Kubernetes apiserver 的 kubeconfig 文件路径若未设置则尝试环境变量KUBECONFIG以及集群内配置in-cluster configuration--log_backtrace_at traceLocation当日志命中file:N位置时输出堆栈追踪默认:0--log_dir string若非空将日志文件写入该目录--logtostderr将日志输出到标准错误而非文件-n, --namespace stringArk 操作的命名空间默认heptio-ark即 Backup 自定义资源所在命名空间--stderrthreshold severity达到或超过该级别的日志输出到 stderr默认2即 ERROR-v, --v LevelV 日志的日志级别--vmodule moduleSpec按patternN的逗号分隔列表进行文件级过滤日志其中-n, --namespace是使用该命令时最需要留意的参数v0.7.0 默认值为heptio-ark。如果备份创建在其它命名空间必须显式指定-n namespace否则命令将找不到备份对象对应源码中f.Namespace()被用于kbClient.Get的ObjectKey与kbClient.List的ListOptions见 describe.go。命令执行流程与底层实现从当前仓库源码 describe.go 可以完整还原该命令的执行链路加载客户端配置client.LoadConfig()读取 CLI 配置文件如 CA 证书路径caCertFile失败时仅输出 WARNING 而不中断创建 controller-runtime 客户端通过f.KubebuilderClient()获取用于读写 Backup 及关联 CRD 资源的客户端数据获取指定名称逐个kbClient.Get读取 Backup 对象未指定名称kbClient.List列出全部 Backup可结合--selector过滤对每个 Backup 额外列出其关联的DeleteBackupRequest删除请求与PodVolumeBackupPod 卷备份即文件系统级卷备份记录用于在输出中展示Deletion Attempts与Pod Volume Backups部分describe.go格式化输出调用output.DescribeBackup生成人类可读文本多个备份之间以空行分隔describe.go。值得说明的是v0.7.0 时代的实现较为朴素通过 client-go 的 Backup 客户端 get/list而当前仓库的现代实现改用了controller-runtime客户端并支持json结构化输出但按名称精确查询 按 selector 列表查询 关联资源汇总展示的核心行为保持一致。测试用例验证仓库中的单元测试 describe_test.go 对该命令进行了端到端验证测试构造了一个名为bk-describe-1的备份builder.ForBackup(...).SnapshotVolumes(false)通过 fake client 创建后执行命令并断言输出中必须包含Backup Volumes:、Or label selector: none以及Name: bk-describe-1等关键字段describe_test.go。这从测试层面印证了命令输出的真实结构与字段命名。输出内容详解describe 到底展示了什么ark backup describe的输出由 backup_describer.go 中的DescribeBackup函数编排生成。虽然 v0.7.0 文档未给出输出样例但结合该实现以及上述测试断言可以明确输出的完整结构1. 元数据与阶段Metadata PhaseName、Namespace等对象元数据d.DescribeMetadata(backup.ObjectMeta)Phase备份当前阶段包括New、Queued、InProgress、Completed、PartiallyFailed、Failed、Deleting等其中失败类阶段以红色输出Completed以绿色输出backup_describer.go。若备份处于Failed/PartiallyFailed还会附带提示(run velero backup logs name for more information)指引用户进一步查看日志Queue position当阶段为Queued时显示排队位置backup.Status.QueuePosition。2. 校验错误Validation errors若backup.Status.ValidationErrors非空将逐条以红色列出——这是排查备份创建失败FailedValidation的第一手信息。3. 错误与警告统计DescribeBackupResults读取备份执行结果warnings / errors 计数用于快速判断备份是否存在部分失败。4. 备份规格Spec——完整展示配置快照对应DescribeBackupSpec逐项输出创建备份时的全部配置包括NamespacesIncluded / Excluded 命名空间列表为空时 Included 显示*Excluded 显示noneResourcesIncluded / Excluded 资源列表以及Cluster-scoped资源的包含策略excluded / included / autoLabel selector与Or label selector备份的资源选择标签Storage Location备份存储位置BSL 名称Velero-Native Snapshot PVs是否启用原生快照false / true / autoFile System Backup (Default)是否默认启用文件系统级备份DefaultVolumesToFsBackupSnapshot Move Data与Data Mover快照数据移动配置TTL备份保留时长CSISnapshotTimeout、ItemOperationTimeout各类操作的超时设置Hooks备份钩子pre/post exec hook的容器、命令、出错策略与超时OrderedResources资源备份顺序若配置。输出所有这些字段意味着即使备份已经过期或对象被修改describe也能还原其创建时的完整意图。5. 备份状态Status——执行结果与进度对应DescribeBackupStatus输出Backup Format Version备份格式版本Started/Completed开始与完成时间戳未开始时显示n/aExpiration过期时间默认 30 天控制器处理前可能显示nilTotal items to be backed up/Items backed up资源条目总数与已备份数进行中显示EstimatedBackup Item Operations异步操作的成功/失败计数HooksAttempted/HooksFailed钩子尝试与失败次数。6. 卷备份详情Backup Volumes输出分为三类对应 backup_describer.go 中的describeNativeSnapshots、describeCSISnapshots与describePodVolumeBackupsVelero-Native Snapshots原生云平台快照列表无则显示none includedCSI SnapshotsCSI 快照列表Pod Volume Backups文件系统级卷备份restic 等上传器按Completed、Failed、In Progress等阶段分组统计进行中的卷会附带传输百分比已完成的卷会附带大小size: X。7. 删除尝试Deletion Attempts若存在DeleteBackupRequest输出每次删除请求的时间戳与阶段如Processed失败次数会以(N failed)标注DescribeDeleteBackupRequests。典型使用场景与示例查看单个备份详情ark backup describe my-backup -n heptio-ark最常用形式精确输出指定备份的全部规格与状态。当备份失败时输出中的Phase: Failed红色与Validation errors能直接给出排查方向同时命令还会提示执行ark backup logs my-backup查看详细日志。同时查看多个备份ark backup describe backup-a backup-b backup-c位置参数可传多个名称输出以空行分隔现代实现中通过fmt.Printf(\n\n%s, s)实现见 describe.go。按标签筛选批量查看ark backup describe -l app in (nginx, wordpress)不带名称参数时列出命名空间下全部备份-l/--selector支持 Kubernetes 标准标签选择器语法如appnginx、tier in (frontend, backend)、!deprecated实现上由labels.Parse解析后交给kbClient.List见 describe.go。指定 kubeconfig 与非默认命名空间ark backup describe my-backup \ --kubeconfig /path/to/kubeconfig \ -n heptio-ark进阶从 v0.7.0 到当前版本的演进对照 v0.7.0 文档与当前仓库实现可以总结出以下演进点便于读者在不同版本间切换使用命令更名ark→veleroark backup describe→velero backup describe默认命名空间变化heptio-ark→velero新增参数现代版本新增了--details展示更详细的卷/操作信息、-o/--output json仅对单个备份输出 JSON 结构化数据、--cacert自定义 CA 证书与--insecure-skip-tls-verify跳过对象存储 TLS 校验定义见 describe.go数据来源演进卷快照信息从对象存储下载DownloadRequest并区分原生快照、CSI 快照与数据移动Data Movement三种方式v0.7.0 时代则主要依赖VolumeSnapshots状态输出能力增强新增资源策略Resource policies、全局卷策略Global volume policies、上传器配置Uploader config等展示项。小结ark backup describe是 Ark 运维中最实用的单点诊断命令之一它既能在备份失败时快速给出Phase、校验错误、错误/警告计数等第一手线索也能完整还原备份的规格配置帮助核对备份到底按什么范围、什么策略执行的。本文结合仓库源码 describe.go 与输出实现 backup_describer.go对命令语法、全部参数及输出字段做了逐项说明读者在实际排障时建议将该命令与ark backup get概览列表、ark backup logs详细日志、ark backup download下载备份文件配合使用形成完整的备份观测手段。若使用现代版本将ark替换为velero并按上文版本演进一节调整参数即可获得相同的排查能力。【免费下载链接】veleroBackup and migrate Kubernetes applications and their persistent volumes项目地址: https://gitcode.com/GitHub_Trending/ve/velero创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表