restore describe 命令详解:查看 Kubernetes 恢复任务的完整状态与卷还原细节)
VeleroArkrestore describe 命令详解查看 Kubernetes 恢复任务的完整状态与卷还原细节【免费下载链接】veleroBackup and migrate Kubernetes applications and their persistent volumes项目地址: https://gitcode.com/GitHub_Trending/ve/velero本指南围绕 Velero 项目v0.9.0 时代名为 ArkCLI 参考文档中的ark describe restores命令展开系统讲解如何使用该命令查看一个或多个 Restore 资源的状态快照、还原进度、过滤条件与 restic 卷还原细节同时结合当前仓库中velero restore describe的实现源码说明现代版本中该命令的完整参数、输出字段与 JSON 结构化输出能力帮助你在备份恢复演练和故障排查中快速定位恢复任务的问题点。命令概览从 ark describe restores 到 velero restore describe在 Velero 项目早期的 v0.9.0 版本中CLI 名为arkark describe restores用于以人类可读的摘要形式展示 Restore 资源。项目随后更名为 VeleroCLI 也相应变为velero该命令在当代版本中的对应形式为velero restore describe。从当前仓库源码 pkg/cmd/cli/restore/restore.go 可以看到restore子命令组下注册了create、get、logs、describe、delete五个子命令其中NewDescribeCommand(f, describe)即本命令的实现入口。原文档位于 site/content/docs/v0.9.0/cli-reference/ark_describe_restores.md是当时自动化生成的 CLI 参考页其 Synopsis 明确给出了命令的基本形态ark describe restores [NAME1] [NAME2] [NAME...] [flags]也就是说该命令既支持不带名称列出并描述全部 Restore也支持一次传入多个名称逐个输出对应 Restore 的详细信息。这一行为在当前源码 pkg/cmd/cli/restore/describe.go 中得到印证当args非空时命令逐个按名称Get对应的Restore对象并收集到列表当未指定名称时则按标签选择器对整个命名空间内的RestoreList执行List。命令选项详解本命令专属选项v0.9.0 文档为本命令定义了以下选项选项简写说明--help-h显示restores子命令的帮助信息--selector string-l只显示匹配该标签选择器label selector的条目--volume-details无显示 restic 卷还原pod volume restore的详细信息其中--selector用于在未指定具体名称时按标签过滤 Restore 列表--volume-details对应的是 pod volume restore即 restic/卷级还原的明细展示——默认情况下 describe 只给出卷还原按阶段聚合的统计数字加上该选项后才展开到每个 Pod 与卷的粒度。从父命令继承的选项文档同时列出了从ark根命令继承的全局选项这些选项控制连接 Kubernetes API Server 的方式以及日志输出行为选项说明--alsologtostderr除写入日志文件外同时将日志输出到标准错误--kubeconfig string与 Kubernetes apiserver 通信所用的 kubeconfig 文件路径未设置时依次尝试环境变量KUBECONFIG与集群内配置--kubecontext string与 Kubernetes apiserver 通信时使用的上下文未设置时默认使用当前上下文kubectl config current-context--log_backtrace_at traceLocation当日志命中file:N时输出堆栈回溯默认:0--log_dir string非空时将日志文件写入该目录--logtostderr将日志输出到标准错误而非文件--namespace string/-nArk 操作的命名空间默认heptio-ark即当时默认的安装命名空间--stderrthreshold severity达到或超过该级别的日志输出到 stderr默认 2--v LevelV 日志的日志级别--vmodule moduleSpec以逗号分隔的patternN设置列表用于按文件过滤日志需要说明的是默认命名空间heptio-ark是 Ark 时代的默认值项目更名为 Velero 后该默认值已随安装机制演进可通过--namespace显式指定实际值以你的部署为准。上述日志类选项在命令执行过程中主要影响诊断信息的呈现方式对 describe 的输出内容本身没有影响。当代源码中的参数演进将 v0.9.0 文档与当前仓库 pkg/cmd/cli/restore/describe.go 中的标志定义对照可以看到该命令的参数在演进中得到了扩充和细化c.Flags().StringVarP(listOptions.LabelSelector, selector, l, listOptions.LabelSelector, Only show items matching this label selector.) c.Flags().BoolVar(details, details, details, Display additional detail in the command output.) c.Flags().BoolVar(insecureSkipTLSVerify, insecure-skip-tls-verify, insecureSkipTLSVerify, If true, the object stores TLS certificate will not be checked for validity. This is insecure and susceptible to man-in-the-middle attacks. Not recommended for production.) c.Flags().StringVar(caCertFile, cacert, caCertFile, Path to a certificate bundle to use when verifying TLS connections.) c.Flags().StringVarP(outputFormat, output, o, outputFormat, Output display format. Valid formats are plaintext and json. json only applies to a single restore)现代版本的标志及其语义如下-l, --selector与旧版--selector一致按标签选择器过滤 Restore 列表。它对应metav1.ListOptions.LabelSelector在源码中通过labels.Parse解析后作为ListOptions传给 controller-runtime 客户端执行 List。--details相当于旧版--volume-details的超集。它不仅展开 pod volume restore 的逐卷明细还额外触发还原资源清单Resource List与 restore item operations 的详细输出见下文输出字段分析。--insecure-skip-tls-verify跳过对象存储 TLS 证书校验源码注释明确警告这存在中间人攻击风险不建议生产使用。它影响 describe 向对象存储下载 results、volume info 等附加数据时的 TLS 行为。--cacert指定用于校验 TLS 连接的 CA 证书包路径。该值首先从客户端配置文件client.LoadConfig()的CACertFile()读取也可由用户显式覆盖。-o, --output输出格式合法值为plaintext默认与json。源码中对该值的校验逻辑位于 pkg/cmd/cli/restore/describe.go非法值会直接报错。需要注意json模式只适用于单个Restore 的描述——当同时描述多个 Restore 时代码会退回 plaintext 输出对应注释 structured output only applies to a single restore in case of OOM。此外命令还通过c.ValidArgsFunction cli.CompleteRestoreNames(f)提供了 Restore 名称的自动补全能力便于交互式终端中快速输入。输出内容describe 到底展示了什么描述输出的核心实现位于 pkg/cmd/util/output/restore_describer.go。DescribeRestore函数按固定顺序渲染以下区块这些内容即你在执行velero restore describe name后看到的完整信息元数据名称、命名空间、创建时间、标签与注解等ObjectMeta信息d.DescribeMetadata。阶段Phase来自restore.Status.Phase。源码对空阶段回退为RestorePhaseNew若对象带DeletionTimestamp阶段字符串会追加(Deleting)。输出带有颜色标记Completed显示为绿色FailedValidation、PartiallyFailed、Failed显示为红色对于Failed/PartiallyFailed的恢复还会追加提示(run velero restore logs name for more information)。进度来自restore.Status.Progress。进行中InProgress时显示 Estimated total items to be restored 与 Items restored so far结束后则显示 Total items to be restored 与 Items restored。时间戳Started与Completed缺失或零值时显示n/a。校验错误restore.Status.ValidationErrors中每一项以红色打印。还原结果Warnings / Errors若Status.Warnings或Status.Errors非零命令会从对象存储下载 results 文件DownloadTargetKindRestoreResults并分别按 Velero、Cluster、Namespaces 三个维度列出告警与错误明细describeRestoreResults。Spec 摘要包括备份来源Backup、包含/排除的命名空间与资源、集群作用域资源是否包含auto/excluded/included、命名空间映射Namespace mappings、标签选择器与或标签选择器、是否还原 PVRestore PVs。Pod 卷还原统计按上传器类型如 restic分组再按阶段Completed、Canceled、Failed、In Progress、Prepared、Accepted、New聚合计数--details时进一步展开到每个namespace/pod及其还原的卷列表describePodVolumeRestores。CSI 快照还原从对象存储下载 RestoreVolumeInfo 文件展示通过 CSI 快照还原的 PVCnamespace/name--details时补充快照内容名VSCName、存储快照 ID、CSI Driver对走数据移动Data Movement的还原则展示 Operation ID、Data Mover、Uploader Type、Restore Type 与还原数据大小。策略与上传器配置Existing Resource Policy、Existing Volume Data Policy、ItemOperationTimeout、Preserve Service NodePorts、Resource Modifier、Resource Policy、Uploader 配置Write Sparse Files、Parallel Files Download等。Restore Item Operations若Status.RestoreItemOperationsAttempted 0默认仅给出 N of M completed successfully, K failed 的汇总并提示specify --details for more information--details时逐条输出每个操作对应的资源、RestoreItemAction 插件、Operation ID、阶段、进度与时间戳。Hook 状态HooksAttempted与HooksFailed计数。Resource List仅 --details从对象存储下载还原资源清单按 GVK 排序后列出实际还原的资源对象describeRestoreResourceList。可见describe 并非简单读取 Restore CR 本身而是聚合了 Kubernetes 集群内对象Restore、PodVolumeRestore与对象存储中持久化的附加产物results、volume info、resource list、item operations 等因此它能呈现恢复任务的全景视图。JSON 结构化输出对于需要被脚本或其他工具消费的场景现代版本支持-o json输出单个 Restore 的结构化描述实现在 pkg/cmd/util/output/restore_structured_describer.go 的DescribeRestoreInSF中。结构化输出以字段名 值的方式组织与 plaintext 输出保持同源信息例如phase当前阶段字符串含(Deleting)后缀progressestimatedTotalItemsToBeRestored/itemsRestoredSoFar或totalItemsToBeRestored/itemsRestoredtimestampsstarted与completedvalidationErrors校验错误数组warnings/errors按 Velero / Cluster / Namespaces 组织的结构化结果specbackupName、namespacesincluded/excluded、resourcesincluded/excluded/clusterScoped、namespaceMappings、labelSelector、orLabelSelectors、restorePVs、existingResourcePolicy、itemOperationTimeout、preserveNodePorts、uploaderConfig等podVolumeRestores按阶段聚合的卷还原信息--details时含逐 Pod 明细csiSnapshotRestores、restoreItemOperations、hookStatus、resourceList等。与 plaintext 一样json模式下下载附加数据失败也不会中断整体输出而是以error getting ...占位符形式体现保证命令的健壮性。使用示例与典型场景# 描述全部 Restore当前 kubeconfig 指向的集群 velero restore describe # 描述单个 Restore velero restore describe my-restore # 一次描述多个 Restore velero restore describe restore-a restore-b # 按标签选择器过滤后描述 velero restore describe -l appwordpress,envprod # 展开卷级pod volume还原明细与资源清单 velero restore describe my-restore --details # 以 JSON 形式输出单个 Restore 的结构化描述 velero restore describe my-restore -o json # 指定 kubeconfig 与命名空间其余全局选项以此类推 velero restore describe my-restore --kubeconfig ~/.kube/config -n velero典型使用场景包括恢复任务完成后核对实际还原的资源数量与阶段PartiallyFailed时通过输出中的 Errors 区块和提示的velero restore logs name定位失败资源通过--details核查每个 Pod 的卷还原是否全部 Completed以及将-o json的输出接入自动化巡检或监控脚本。该命令的行为在仓库测试 pkg/cmd/cli/restore/describe_test.go 中有自动化验证测试构造名为restore-describe-1的 Restore 与 fake client校验命令的Short描述为 Describe restores执行后标准输出应包含Name: restore-describe-1同时验证了NewDescribeCommand的注册与基本执行链路。关联参考v0.9.0 CLI 参考ark describe restores父命令参考ark describe命令实现pkg/cmd/cli/restore/describe.go、pkg/cmd/cli/restore/restore.go输出渲染pkg/cmd/util/output/restore_describer.go、pkg/cmd/util/output/restore_structured_describer.go命令测试pkg/cmd/cli/restore/describe_test.go相关 CRD 类型pkg/apis/velero/v1/restore_types.go、pkg/apis/velero/v1/pod_volume_restore_type.go注本文所述 v0.9.0 文档中的命令形态与默认命名空间heptio-ark属于 Ark 时代的历史快照当前仓库中的命令为velero restore describe参数集合已按上文所述演进实际使用时请以你部署的 Velero 版本对应的velero restore describe --help输出为准。【免费下载链接】veleroBackup and migrate Kubernetes applications and their persistent volumes项目地址: https://gitcode.com/GitHub_Trending/ve/velero创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考