
Velero/Arkrestore describe命令完全指南深入解析恢复任务详情与排查恢复问题【免费下载链接】veleroBackup and migrate Kubernetes applications and their persistent volumes项目地址: https://gitcode.com/GitHub_Trending/ve/velero本篇技术指南聚焦于 Velero其前身 Arkv0.7.1 时代称为ark restore describe现代版本为velero restore describe的恢复任务描述命令。该命令用于以人类可读的格式展示一次或多次 Kubernetes 资源恢复Restore的完整详情包括恢复规格、执行阶段、校验错误、警告与错误明细是运维人员排查恢复失败、分析恢复质量的核心工具。读完本文你将掌握该命令的完整参数用法、输出字段的逐项含义并能结合日志与源码定位恢复过程中的具体问题。命令概览Describe restoresark restore describe是 Velero/Ark 中restore子命令族create、delete、describe、get、logs的一员其唯一职责是描述恢复任务。在 v0.7.1 CLI 参考文档 中其基本语法为ark restore describe [NAME1] [NAME2] [NAME...] [flags]命令接受一个或多个恢复名称作为位置参数。若不传任何名称则等价于描述所有恢复任务具体行为取决于是否同时使用标签选择器过滤。该命令在现代版本中的完整定义位于 describe.go其Short描述即为 Describe restores与文档中的 Synopsis 完全一致。注意版本差异v0.7.1 时代该工具名为ark默认命名空间为heptio-ark见 ark_restore.md项目更名 Velero 后命令变为velero restore describe默认命名空间为velero。本文以 v0.7.1 文档为基准行文同时补充现代实现的源码细节。参数详解本命令专属参数v0.7.1参数简写说明--help-h显示 describe 命令的帮助信息--selector-l仅显示匹配该标签选择器label selector的恢复任务在现代版本中describe.go 还扩展了以下参数可用于更精细的排查参数说明--details在命令输出中显示额外细节如 Pod 卷恢复明细、逐项资源列表、Restore Item Operations 明细等--insecure-skip-tls-verify为 true 时不校验对象存储 TLS 证书存在中间人攻击风险不建议生产环境使用用于从对象存储下载恢复结果文件时绕过证书校验--cacert指定用于校验 TLS 连接的 CA 证书捆绑包路径与备份存储位置BSL的自定义 CA 场景配合使用--output/-o输出格式合法值为plaintext和json其中json仅适用于单个恢复任务避免处理列表时的内存问题从父命令继承的全局参数v0.7.1ark restore describe同时继承ark根命令的全局日志与连接参数参数说明--alsologtostderr同时将日志写入标准错误与日志文件--kubeconfig与 Kubernetes apiserver 通信所用的 kubeconfig 路径若未设置依次尝试KUBECONFIG环境变量与集群内配置--log_backtrace_at当日志命中file:N时输出堆栈追踪默认:0--log_dir非空时指定日志文件写入目录--logtostderr将日志写入标准错误而非文件--namespace/-nArk 操作的命名空间默认heptio-ark现代版本默认velero--stderrthreshold日志级别达到或超过该阈值时输出到标准错误默认 2--vV 日志级别--vmodule以逗号分隔的patternN列表按文件过滤日志级别命令的执行流程源码级从现代源码 describe.go 可以还原该命令的完整执行链路建立客户端通过f.KubebuilderClient()获取与 Kubernetes API 通信的 controller-runtime client。校验输出格式若--output不是plaintext或json直接报错退出。收集恢复对象若传入名称参数则逐个通过kbClient.Get按{namespace, name}拉取Restore对象并聚合为列表若未传名称则解析--selector并通过kbClient.List列出命名空间下所有或匹配标签的恢复任务。关联 PodVolumeRestore对每个恢复通过标签velerov1api.RestoreNameLabel即velero.io/restore-name风格的归属标签列出对应的PodVolumeRestore列表用于展示卷级恢复状态。渲染输出单个恢复且指定json格式时调用output.DescribeRestoreInSF输出结构化 JSON其余情况调用output.DescribeRestore输出 human-readable 文本多个恢复之间以空行分隔。该命令的单元测试位于 describe_test.go测试通过 fake client 创建一个名为restore-describe-1的恢复对象并执行命令断言输出中包含Name: restore-describe-1验证了最基本的按名称描述行为。输出字段逐项解读ark restore describe NAME的文本输出由 restore_describer.go 中的DescribeRestore函数生成核心字段如下输出字段含义来源Name/Namespace/Labels/Annotations恢复对象的元数据d.DescribeMetadata(restore.ObjectMeta)Phase恢复所处阶段。Completed显示为绿色FailedValidation、PartiallyFailed、Failed显示为红色若对象带有删除时间戳则追加(Deleting)标注。失败/部分失败时提示运行velero restore logs NAME查看更多信息restore.Status.PhaseEstimated total items / Items restored so far或Total items / Items restored恢复进度统计进行中与已完成阶段文案不同restore.Status.ProgressStarted/Completed开始与完成时间戳未开始则为n/arestore.Status.StartTimestamp/CompletionTimestampValidation errors恢复创建时发现的校验错误列表红色显示restore.Status.ValidationErrorsBackup本次恢复所基于的备份名称restore.Spec.BackupNameNamespaces包含/排除的命名空间为空或*时显示 all namespaces found in the backuprestore.Spec.IncludedNamespaces/ExcludedNamespacesResources包含/排除的资源类型Included为空显示*Cluster-scoped显示auto/included/excludedrestore.Spec.IncludedResources/ExcludedResources/IncludeClusterResourcesNamespace mappings命名空间重映射关系源命名空间 → 目标命名空间restore.Spec.NamespaceMappingLabel selector/Or label selector按标签筛选的恢复资源条件restore.Spec.LabelSelector/OrLabelSelectorsRestore PVs是否恢复持久卷auto/true/falserestore.Spec.RestorePVsCSI Snapshot Restores通过 CSI 快照含数据移动 Data Movement恢复的 PVC 明细--details可展开快照内容名、存储快照 ID、驱动、操作 ID、数据迁移器、恢复数据大小等从对象存储下载的RestoreVolumeInfo文件Existing Resource Policy/Existing Volume Data Policy已存在资源/卷数据的处理策略restore.Spec.ExistingResourcePolicy/ExistingVolumeDataPolicyItemOperationTimeout单项操作的超时时间restore.Spec.ItemOperationTimeoutPreserve Service NodePorts是否保留 Service NodePortauto/true/falserestore.Spec.PreserveNodePortsRestore Item Operations恢复项操作统计成功/失败数--details展开每个操作的动作插件、操作 ID、阶段、错误、进度restore.Status.RestoreItemOperations*HooksAttempted/HooksFailed恢复钩子执行统计restore.Status.HookStatus当恢复完成时无论是否出现问题Phase都会显示为Completed警告与错误数量可从ark restore get的 WARNINGS/ERRORS 列获知。恢复的 Warnings 与 Errors 明细不会内嵌在 Restore 对象中而是由describeRestoreResultsrestore_describer.go通过 DownloadRequest 机制从对象存储中下载RestoreResults文件gzip 压缩的 JSON后解析渲染。这就是为什么描述命令在展示警告/错误时需要访问备份存储位置BSL也是--cacert、--insecure-skip-tls-verify参数存在的意义。实战用 describe 排查恢复问题debugging-restores.md 给出了完整的排查工作流先列出恢复任务观察 WARNINGS 与 ERRORS 计数ark restore get输出形如NAME BACKUP STATUS WARNINGS ERRORS CREATED SELECTOR backup-test-20170726180512 backup-test Completed 155 76 2017-07-26 11:41:14 -0400 EDT none backup-test-20170726180513 backup-test Completed 121 14 2017-07-26 11:48:24 -0400 EDT none backup-test-2-20170726180514 backup-test-2 Completed 0 0 2017-07-26 13:31:21 -0400 EDT none backup-test-2-20170726180515 backup-test-2 Completed 0 1 2017-07-26 13:32:59 -0400 EDT none对存在警告或错误的恢复执行 describe深入挖掘明细ark restore describe backup-test-20170726180512输出类似Name: backup-test-20170726180512 Namespace: heptio-ark Labels: none Annotations: none Backup: backup-test Namespaces: Included: * Excluded: none Resources: Included: serviceaccounts Excluded: nodes Cluster-scoped: auto Namespace mappings: none Label selector: none Restore PVs: auto Phase: Completed Validation errors: none Warnings: Ark: none Cluster: none Namespaces: heptio-ark: serviceaccounts ark already exists serviceaccounts default already exists kube-system: serviceaccounts attachdetach-controller already exists serviceaccounts certificate-controller already exists serviceaccounts cronjob-controller already exists serviceaccounts daemon-set-controller already exists ... default: serviceaccounts default already exists Errors: Ark: none Cluster: none Namespaces: none必要时用 logs 命令获取详细日志参见 ark_restore_logs.mdark restore logs backup-test-20170726180512失败/部分失败的恢复在describe输出中会明确提示运行restore logs获取更多信息见 restore_describer.go。理解 Warnings 与 Errors 的结构在 describe 输出中Warnings 与 Errors 使用相同的三层结构组织分别代表不同来源的问题见 debugging-restores.mdArkArk 服务端遇到的系统级问题例如无法读取目录Cluster与集群级cluster-scoped资源恢复相关的问题Namespaces命名空间到其各自资源恢复问题的映射表。语义上Errors表示恢复不完整或部分失败Warnings表示非阻塞性问题——例如恢复过程看起来正常、备份中引用的资源都以某种形式存在但其中一些可能此前已存在如示例中的serviceaccounts default already exists。该渲染逻辑对应源码中的describeResult函数restore_describer.go。进阶用法与相关命令一次描述多个恢复ark restore describe restore-a restore-b输出以空行分隔依次展示配合-l标签选择器可批量筛选例如按备份来源或业务标签过滤。查看恢复的 JSON 原始形态现代版本velero restore describe NAME -o json可输出单个恢复的结构化 JSON便于脚本处理与二次分析与 output-file-format.md 中备份/恢复归档文件的 JSON 记录互为印证——备份目录中的ark-backup.json完整记录了 Backup 资源的规格与status.version字段。命令族配合ark restore describe与 ark restore get列表与计数、ark restore logs详细日志、ark restore create/delete生命周期管理共同构成恢复任务的全链路观测手段相关子命令完整清单见 ark_restore.md 的 SEE ALSO 部分。小结ark restore describe现代velero restore describe是将恢复任务的规格与结果统一呈现的入口规格侧覆盖备份来源、命名空间/资源包含排除、标签选择器、PV 恢复策略、命名空间映射等恢复配置结果侧覆盖阶段、进度、校验错误以及从对象存储下载解析的警告/错误明细。其输出字段全部有源码与 API 定义支撑详见 restore_describer.go配合--details可展开卷级与操作级细节是任何 Velero 备份恢复演练与故障排查中不可跳过的第一步。【免费下载链接】veleroBackup and migrate Kubernetes applications and their persistent volumes项目地址: https://gitcode.com/GitHub_Trending/ve/velero创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考