十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

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

Velero `describe backups` 命令详解:从 Ark 到 Velero 的备份状态可视化诊断

Velero `describe backups` 命令详解:从 Ark 到 Velero 的备份状态可视化诊断 Velerodescribe backups命令详解从 Ark 到 Velero 的备份状态可视化诊断【免费下载链接】veleroBackup and migrate Kubernetes applications and their persistent volumes项目地址: https://gitcode.com/GitHub_Trending/ve/velero本文聚焦 Velero早期名为 ArkCLI 中的describe backups命令系统讲解其命令语法、参数选项、输出字段含义及其背后的源码实现。读者将掌握如何通过该命令快速查看备份的配置快照、执行阶段、验证结果与卷快照明细并能结合当前仓库源码理解输出的生成逻辑。命令定位与历史背景ark describe backups是 ArkVelero 的前身v0.7.1 时期项目名为 Ark命令前缀为ark默认命名空间为heptio-ark提供的核心诊断命令。当前仓库已将 Ark 更名为 Velero命令前缀同步改为velero默认命名空间改为velero该命令在当代版本中对应为velero backup describe同时保留了velero describe backups形式的别名别名定义见 pkg/cmd/cli/describe/describe.go。无论命令前缀如何演变其核心职责始终一致读取 Kubernetes 集群中的 Backup 自定义资源以人类可读的排版形式输出备份的完整状态帮助用户确认备份是否按预期执行、是否完整落盘以及失败时定位根因。命令语法根据 v0.7.1 的 官方 CLI 参考文档命令基本语法为ark describe backups [NAME1] [NAME2] [NAME...] [flags]不携带任何NAME时命令列出并描述当前命名空间下的所有Backup 资源携带一个或多个备份名时逐个描述指定备份在当代版本中对应velero backup describe [NAME1] [NAME2] [NAME...] [flags] # 或使用别名 velero describe backups [NAME1] [NAME2] [NAME...] [flags]从当前源码 pkg/cmd/cli/backup/describe.go 可见命令定义明确为Use: use [NAME1] [NAME2] [NAME...]支持一次传入多个备份名。位置参数的行为差异结合当前仓库实现 pkg/cmd/cli/backup/describe.go可以明确两种调用方式的数据获取路径完全不同指定名称对每个名称执行kbClient.Get精确查询逐个将命中的 Backup 追加到结果列表不指定名称解析--selector标签选择器默认为空即匹配全部执行kbClient.List一次拉取当前命名空间下所有匹配的 Backup。由此可以推断日常诊断单个备份时使用名称参数查询更精确、响应更快而审计全量备份或按标签筛选时使用无参数加--selector的组合。选项详解v0.7.1 时代的选项原文档列出的选项非常精简仅有两个选项说明-h, --help显示命令帮助-l, --selector string仅显示匹配该标签选择器label selector的备份条目当代版本扩展出的选项随着 Velero 功能演进当前仓库中的NewDescribeCommandpkg/cmd/cli/backup/describe.go在此基础上扩展出四个实用选项选项默认值说明--detailsfalse在输出中显示更多明细例如卷快照VolumeSnapshot的详细字段--insecure-skip-tls-verifyfalse为读取备份结果而访问对象存储时不校验其 TLS 证书有效性存在中间人攻击风险不建议生产环境使用--cacert string读取本地配置文件所得 CA 证书路径访问对象存储时用于校验 TLS 连接的自定义 CA 证书包路径未指定时优先使用 BackupStorageLocation 中配置的 CA 证书-o, --output stringplaintext输出格式合法值为plaintext与jsonjson结构化输出仅适用于单个备份避免输出超大列表导致内存溢出源码注释明确说明见 pkg/cmd/cli/backup/describe.go若--output传入非plaintext/json的值命令会直接报错退出校验逻辑见 pkg/cmd/cli/backup/describe.go。从父命令继承的通用选项原文档同时列出了一组继承自根命令的全局选项当前仓库依旧保留同类能力kubeconfig、日志相关参数参见 pkg/cmd 目录下的命令框架定义选项说明--alsologtostderr同时将日志写入标准错误与日志文件--kubeconfig string指定用于连接 Kubernetes API Server 的 kubeconfig 路径未设置时依次尝试环境变量KUBECONFIG与集群内配置--log_backtrace_at traceLocation当日志命中file:N时输出堆栈跟踪默认:0--log_dir string非空时指定日志文件写入目录--logtostderr日志写入标准错误而非文件-n, --namespace stringArk/Velero 操作的命名空间v0.7.1 默认heptio-ark现版本默认velero--stderrthreshold severity达到该级别及以上的日志输出到标准错误默认2即 ERROR 级-v, --v LevelV 日志级别--vmodule moduleSpec按patternN逗号分隔列表对指定文件过滤日志级别输出内容的字段解析describe backups的输出远比参数列表丰富其完整排版由 pkg/cmd/util/output/backup_describer.go 中的DescribeBackup函数生成输出按以下区块组织元数据与阶段Phase每个备份先输出元数据Name、Namespace 等随后是执行阶段。源码根据backup.Status.Phase对阶段进行着色处理pkg/cmd/util/output/backup_describer.goCompleted显示为绿色FailedValidation、PartiallyFailed、Failed显示为红色且失败或部分失败时追加提示(run velero backup logs name for more information)引导用户用velero backup logs拉取日志定位问题New、Queued、ReadyToStart、InProgress、Finalizing、Deleting等阶段原样输出若 Phase 为空则回退显示为New。若备份处于Queued队列等待阶段还会额外输出其在备份队列中的位置Queue position。校验错误Validation errors当backup.Status.ValidationErrors非空时逐条以红色列出。备份在启动前会先经过校验校验不通过将直接进入FailedValidation阶段此区块是排查配置错误如资源选择器非法、存储位置不存在的第一手信息。备份结果Backup resultsDescribeBackupResults会向对象存储发起请求读取备份结果清单展示被备份的资源列表、卷数量统计以及失败/警告条目数这正是--insecure-skip-tls-verify与--cacert两个选项发挥作用的地方——读取结果需要与对象存储建立 TLS 连接此时可指定 CA 证书或临时跳过校验。备份配置快照Backup specDescribeBackupSpecpkg/cmd/util/output/backup_describer.go 起将备份创建时的完整 Spec 原样回显核心字段包括Namespaces包含/排除的命名空间列表为空时包含项显示*即全部Resources包含/排除的资源类型以及集群级资源开关included/excluded/auto当代版本还支持按集群作用域与命名空间作用域细分的过滤配置Label selector / Or label selector备份对象过滤使用的标签选择器Storage Location备份写入的 BackupStorageLocation 名称Velero-Native Snapshot PVs / File System Backup / Snapshot Move Data / Data Mover卷快照策略原生快照、文件系统备份、快照数据移动及其数据移动器TTL、CSISnapshotTimeout、ItemOperationTimeout备份保留时长及各类超时配置Hooks备份钩子Backup Hooks配置逐条列出钩子名称、适用命名空间、适用资源与执行命令。备份状态Backup statusDescribeBackupStatus输出执行后的动态状态包括开始/完成时间、过期时间、备份卷明细Backup Volumes区块展示 PodVolumeBackup 与各类快照信息、是否启用卷快照数据移动、以及资源策略Resource policies与全局卷策略Global volume policies等。删除请求DeleteBackupRequests若存在与该备份关联的DeleteBackupRequest对象即备份删除流程已发起输出末尾会追加删除请求描述区块。实现上命令会通过标签velero.io/backup-name与velero.io/backup-uid精确关联查询pkg/cmd/cli/backup/describe.go。实现原理与调用链describe backups的完整调用链可以概括为velero describe └─ NewCommand(f) pkg/cmd/cli/describe/describe.go └─ backup.NewDescribeCommand(f, backups) ├─ 参数解析selector/details/cacert/output 等 pkg/cmd/cli/backup/describe.go ├─ 按名称 Get 或按标签 List 获取 Backup 列表 ├─ 关联查询 DeleteBackupRequest / PodVolumeBackup └─ output.DescribeBackup(...) / output.DescribeBackupInSF(...) ├─ 纯文本排版pkg/cmd/util/output/backup_describer.go └─ JSON 结构化输出pkg/cmd/util/output/backup_structured_describer.go两点值得注意的实现细节结构化输出的约束json格式只在结果列表中仅有一个备份时生效其余情况一律回退为纯文本pkg/cmd/cli/backup/describe.go。多备份场景下如需 JSON官方建议逐个描述、分别导出避免一次性输出海量数据。补全支持命令注册了ValidArgsFunction以支持备份名的 Shell 自动补全pkg/cmd/cli/backup/describe.go交互体验与kubectl一致。该命令的测试用例见 pkg/cmd/cli/backup/describe_test.go测试构造了一个名为bk-describe-1的备份对象写入 fake client执行命令后断言输出包含Name:、Backup Volumes:、Or label selector: none等关键字段可直接用于验证命令行为与输出结构。常见使用场景场景推荐命令查看最近一次备份的状态与配置快照velero backup describe backup-name批量审计全部备份的执行情况velero backup describe按标签筛选备份如只看schedulenightly的备份velero backup describe --selector schedulenightly深挖卷快照与数据移动明细velero backup describe backup-name --details脚本化消费备份状态velero backup describe backup-name -o json备份失败后定位根因velero backup describe backup-name查看红色 Phase 与 Validation errors随后velero backup logs backup-name拉取日志相关命令describe backups属于describe命令族同族命令还包括ark describe — describe 命令族入口schedules、restores 等同族命令的当代实现可参见 pkg/cmd/cli/describe/describe.govelero backup logs— 导出备份执行日志与describe配合完成故障定位velero backup get— 以表格形式列出备份的概要信息与describe的详表输出互为补充。【免费下载链接】veleroBackup and migrate Kubernetes applications and their persistent volumes项目地址: https://gitcode.com/GitHub_Trending/ve/velero创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表