
Velero 资源删除命令实战从 ark delete 到 velero delete 的完整 CLI 指南【免费下载链接】veleroBackup and migrate Kubernetes applications and their persistent volumes项目地址: https://gitcode.com/GitHub_Trending/ve/velero本篇技术指南以仓库中 v0.7.1 版本 CLI 参考文档 ark_delete.md 为核心系统讲解备份工具Heptio Ark / 现 Velero中资源删除命令的完整用法包括命令层级结构、全局参数、backup / restore / schedule 三个子命令的语义差异并结合当前仓库源码剖析其底层实现机制删除请求对象的生成、确认交互、标签选择器等。读完本文你将能正确、安全地在集群中删除 Ark/Velero 的备份、恢复与调度资源并理解删除操作背后非立即销毁的异步语义。ark delete 命令概览删除 Ark 资源根据 ark_delete.md 的说明ark delete的作用是删除 Ark 资源Delete ark resources它是 Ark CLI 顶层命令树中的一个管理命令组本身不直接删除任何对象而是通过三个子命令分别删除备份、恢复和调度资源ark delete ├── ark delete backup # Delete a backup删除备份 ├── ark delete restore # Delete a restore删除恢复 └── ark delete schedule # Delete a schedule删除调度顶层ark delete命令的 Options 部分只包含一个标志-h, --help help for delete即-h/--help用于查看该命令的帮助信息。这也印证了 cli-reference 目录 README 中的说明CLI 参考目录中列出的所有命令及标志信息都可以直接通过 CLI 的--help标志在终端中实时查看。继承自父命令的全局参数详解ark delete及所有子命令都会继承来自顶层ark命令的全局参数这些参数控制的是 CLI 与 Kubernetes API Server 的通信方式以及日志输出行为。完整参数如下--alsologtostderr log to standard error as well as files --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 -n, --namespace string The namespace in which Ark should operate (default heptio-ark) --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逐个解读参数类型/默认值作用--kubeconfigstring指定用于连接 Kubernetes API Server 的 kubeconfig 文件路径若不设置则依次尝试KUBECONFIG环境变量与集群内in-cluster配置-n, --namespacestring默认heptio-arkArk 操作的命名空间。v0.7.1 时代 Ark 默认部署在heptio-ark命名空间资源对象Backup、Restore、Schedule 等 CRD 实例都存放在该命名空间下--alsologtostderr布尔日志同时写入文件与标准错误输出--logtostderr布尔日志写入标准错误输出而非文件--log_dirstring非空时指定日志文件的输出目录--log_backtrace_attraceLocation默认:0当日志命中file:N时输出堆栈跟踪--stderrthresholdseverity默认2达到或超过该严重级别的日志输出到 stderr-v, --vLevelV 日志的日志级别--vmodulemoduleSpec以逗号分隔的patternN列表按文件过滤日志级别注意v0.7.1 文档中默认命名空间为heptio-ark这是 Ark 时期的默认值当前仓库版本已将命名空间默认值调整为velero具体以你实际使用的版本为准。子命令详解backup、restore、schedule删除备份ark delete backup参考 ark_delete_backup.md用法为ark delete backup NAME [flags]该子命令删除一个备份Delete a backupNAME为要删除的 Backup 资源名称。其自有 Options 同样只有-h, --help。删除恢复ark delete restore参考 ark_delete_restore.md用法为ark delete restore NAME [flags]该子命令删除一个恢复Delete a restoreNAME为 Restore 资源名称。删除调度ark delete schedule参考 ark_delete_schedule.md用法为ark delete schedule NAME [flags]该子命令删除一个调度Delete a scheduleNAME为 Schedule 资源名称。三者均位于ark delete父命令之下见文档末尾的 SEE ALSO 部分并共享同一组继承自父命令的全局参数。需要特别说明的是在 v0.7.1 中删除备份、恢复与调度使用的是ark delete type NAME动词-资源类型的命令形式这与文档 ark.md 中描述的命令模型一致——Ark 采用类似kubectl的命令模型同一操作存在两种等价写法例如ark get backup与ark backup get、ark create schedule与ark schedule create等价。源码视角velero 删除命令的底层实现机制虽然 v0.7.1 文档以ark为命令名但当前仓库源码中该命令体系已演进为velero命令其实现位于 pkg/cmd/cli/delete/delete.go。从源码结构看NewCommand负责组装delete命令组注册了四个子命令并为主命令和各子命令声明了复数别名backupCommand : backup.NewDeleteCommand(f, backup) backupCommand.Aliases []string{backups} backuplocationCommand : backuplocation.NewDeleteCommand(f, backup-location) backuplocationCommand.Aliases []string{backup-locations} restoreCommand : restore.NewDeleteCommand(f, restore) restoreCommand.Aliases []string{restores} scheduleCommand : schedule.NewDeleteCommand(f, schedule) scheduleCommand.Aliases []string{schedules}可以看出与 v0.7.1 文档相比当前版本还额外增加了backup-location备份存储位置的删除命令。别名机制backups/restores/schedules让用户可以写velero delete backups这样的复数形式。统一的 DeleteOptions选择器与确认交互三个资源删除子命令共享同一个选项结构体 pkg/cmd/cli/delete_options.gotype DeleteOptions struct { *SelectOptions confirm.ConfirmOptions Client controllerclient.Client Namespace string }从该结构体的组合方式可以推断删除命令的核心设计包含两大部分资源选择SelectOptions支持按名称命令行参数、按标签选择器--selector或按全部--all三种方式圈定要删除的资源删除确认ConfirmOptions默认需要交互式确认只有传入--confirm标志或用户交互确认后才真正执行。对应的Run函数例如 pkg/cmd/cli/backup/delete.go在开头即执行确认检查if !o.Confirm !confirm.GetConfirmation() { // Dont do anything unless we get confirmation return nil }备份删除的异步语义DeleteBackupRequest值得深入理解的是删除备份与删除恢复/调度走的是完全不同的实现路径删除备份backup并不会立即删除 Backup 对象而是为每个备份创建一个DeleteBackupRequest资源见 pkg/cmd/cli/backup/delete.go由后端的 backup deletion controller 异步执行真正的清理。命令输出也明确说明了这一点The backup will be fully deleted after all associated data (disk snapshots, backup files, restores) are removed.备份将在所有关联数据——磁盘快照、备份文件、恢复——都被移除后彻底删除。此外该实现还会校验备份所引用的 BackupStorageLocation 的访问模式若存储位置处于 read-only 模式则会拒绝删除并报错见 pkg/cmd/cli/backup/delete.go。删除恢复restore与调度schedule直接调用Client.Delete删除对应的 Restore / Schedule 对象见 pkg/cmd/cli/restore/delete.go 与 pkg/cmd/cli/schedule/delete.go其中 Restore 同样提示其关联的对象存储文件会在之后被异步清理。这正是文档标题Delete ark resources背后真正的工程语义CLI 的 delete 命令只是提交删除请求资源及其关联数据的物理清理由控制器在后台完成。实战示例当前版本 velero 命令结合 pkg/cmd/cli/backup/delete.go、pkg/cmd/cli/restore/delete.go 与 pkg/cmd/cli/schedule/delete.go 中内置的 Example 文本常用操作如下# 删除名为 backup-1 的备份 velero backup delete backup-1 # 删除备份且跳过交互确认 velero backup delete backup-1 --confirm # 同时删除多个备份 velero backup delete backup-1 backup-2 # 删除 schedule-1 调度产生的所有备份按标签选择 velero backup delete --selector velero.io/schedule-nameschedule-1 # 删除所有备份 velero backup delete --all # 删除恢复 / 调度支持标签选择器与 --all velero restore delete restore-1 --confirm velero schedule delete schedule-1 --confirm velero restore delete --selector foobar集群凭据的解析顺序删除命令需要与 Kubernetes API Server 通信因此正确配置集群凭据是执行任何ark delete/velero delete的前提。根据 cli-reference 目录 READMEArk以及当前 Velero按以下顺序查找集群凭据--kubeconfig命令行标志指定的 kubeconfig 文件$KUBECONFIG环境变量指向的 kubeconfig 文件集群内in-cluster配置——仅当 CLI 运行在集群内的 Pod 中时才可用。这一查找顺序同样适用于 v0.7.1 文档中--kubeconfig参数的说明If unset, try the environment variable KUBECONFIG, as well as in-cluster configuration。从 Ark 到 Velero 的命令演进与参考仓库中保留了 v0.7.1 时代的完整 CLI 参考文档目录 site/content/docs/v0.7.1/cli-reference/其中每个命令对应一个 Markdown 文件。而当前源码pkg/cmd/cli/显示命令名已从ark演进为velero默认命名空间从heptio-ark调整为velero删除命令组也增加了backup-location子命令并引入了--selector/--all/--confirm等更丰富的选项。若需查看完整的命令列表与标志可在对应版本 CLI 中直接使用--help或在仓库中查阅删除命令组实现pkg/cmd/cli/delete/delete.go通用删除选项pkg/cmd/cli/delete_options.go备份删除实现与示例pkg/cmd/cli/backup/delete.go恢复删除实现与示例pkg/cmd/cli/restore/delete.go调度删除实现与示例pkg/cmd/cli/schedule/delete.gov0.7.1 删除命令参考site/content/docs/v0.7.1/cli-reference/ark_delete.md掌握ark deletevelero delete命令组是日常管理备份生命周期的基础能力通过 backup、restore、schedule 三个子命令按需清理资源结合--selector与--all实现批量管理并牢记删除请求的异步语义——提交删除后关联的对象存储文件与云磁盘快照由后端控制器负责最终清理。【免费下载链接】veleroBackup and migrate Kubernetes applications and their persistent volumes项目地址: https://gitcode.com/GitHub_Trending/ve/velero创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考