ARTICLE DETAIL

资讯详情

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

Velero(Ark)创建恢复操作指南:`ark create restore` 命令全解析

Velero(Ark)创建恢复操作指南:`ark create restore` 命令全解析 VeleroArk创建恢复操作指南ark create restore命令全解析【免费下载链接】veleroBackup and migrate Kubernetes applications and their persistent volumes项目地址: https://gitcode.com/GitHub_Trending/ve/velero导读ark create restore是 Heptio ArkVelero 的前身在 v0.6.0 时代用于从既有备份Backup创建恢复Restore的核心 CLI 命令。本文以仓库中 site/content/docs/v0.6.0/cli-reference/ark_create_restore.md 的官方命令参考为骨架逐项解析其全部参数语义与默认值并结合当前仓库源码 pkg/cmd/cli/restore/create.go 揭示该命令从ark create restore演化为现代velero restore create的底层实现脉络。读完本文你将掌握如何用该命令完成命名空间重映射、资源/命名空间过滤、集群级资源取舍、卷快照恢复等典型恢复场景并了解命令在客户端的校验与提交逻辑。命令概述与使用语法ark create restore的作用是基于一次已经完成的备份创建恢复请求Ark Server 在收到该请求后会把备份中的 Kubernetes 对象与持久卷数据恢复到当前集群。在 v0.6.0 文档中命令的基本语法为ark create restore BACKUP [flags]其中BACKUP是位置参数指定要恢复的备份名称。恢复操作支持多命名空间重映射——例如在单次恢复中可以把备份中abc命名空间的对象重建到def命名空间同时把123命名空间的对象重建到456命名空间参见 site/content/docs/v0.6.0/concepts.md 的 Restores 章节。恢复完成后被恢复的 Kubernetes 对象会带有形如ark-restoreBACKUP NAME-TIMESTAMP的标签其中TIMESTAMP格式为YYYYMMDDhhmmss便于用户追踪恢复产生的对象。命令参数详解本节完整罗列并解析官方文档中ark create restore支持的全部选项覆盖其类型、默认值与使用语义。选项类型默认值说明--exclude-namespacesstringArray无从恢复中排除的命名空间列表--exclude-resourcesstringArray无从恢复中排除的资源列表格式为resource.group如storageclasses.storage.k8s.io-h, --help--显示restore命令的帮助信息--include-cluster-resourcesoptionalBooltrue可省略值直接写为--include-cluster-resources是否在恢复中包含集群级cluster-scoped资源--include-namespacesstringArray*全部命名空间要包含的命名空间列表使用*表示所有命名空间--include-resourcesstringArray无默认全部要包含的资源列表格式为resource.group如storageclasses.storage.k8s.io使用*表示全部资源--label-columnsstringArray无以逗号分隔的标签列表作为ark get restores输出中的额外列展示--labelsmapStringString无应用到 Restore 对象上的标签键值对形式--namespace-mappingsmapStringString无命名空间映射格式为src1:dst1,src2:dst2,...把备份中的源命名空间名映射为恢复后的目标命名空间名-o, --outputstring无输出显示格式。对于 create 类命令仅展示对象而不提交到服务器合法值为table、json、yaml--restore-volumesoptionalBooltrue可省略值直接写为--restore-volumes是否从快照恢复卷数据-l, --selectorlabelSelectornone仅恢复匹配该标签选择器的资源--show-labels-false在输出的最后一列显示标签关键参数的行为语义--include-cluster-resourcesoptionalBool 三态布尔这是一个可省略值的三态布尔参数直接写--include-cluster-resources等价于--include-cluster-resourcestrue。该参数可取true、false或null不设置。作为参照在 site/content/docs/v0.6.0/api-types/backup.md 对同名字段includeClusterResources的语义说明中设为true时包含全部集群级资源受 include/exclude 资源与标签选择器约束设为false时不包含任何集群级资源不设置时仅当全部命名空间被包含且无排除命名空间时才包含全部集群级资源否则只包含与所包含命名空间级资源相关联的集群级资源例如包含某个 PersistentVolumeClaim 时其关联的集群级 PersistentVolume 也会一并恢复。--namespace-mappings实现跨命名空间恢复namespace remapping的核心参数。例如--namespace-mappings abc:def,123:456会在单次恢复中同时完成多组映射常用于集群迁移或灾备演练场景下避免命名空间冲突。--selector与--include-resources/--exclude-resources组合标签选择器用于对象级别的细粒度过滤资源列表则用于资源类别级别的过滤两者叠加可精确控制恢复范围例如只恢复appnginx的 Deployment。-o, --output的预演dry-run能力对 create 类命令指定-o json或-o yaml时命令只把将要创建的 Restore 对象输出到标准输出而不会真正发送到 Kubernetes API Server这为恢复前的配置审查提供了便捷手段。从父命令继承的通用选项ark create restore还继承了 Ark CLI 的全局日志与 kubeconfig 选项选项说明--alsologtostderr同时把日志写入标准错误与文件--kubeconfig string与 Kubernetes apiserver 通信所用的 kubeconfig 文件路径若未设置依次尝试环境变量KUBECONFIG与集群内in-cluster配置--log_backtrace_at traceLocation当日志到达file:N位置时输出堆栈跟踪默认:0--log_dir string非空时指定日志文件写入目录--logtostderr仅把日志写入标准错误--stderrthreshold severity达到或超过该级别默认 2的日志输出到标准错误-v, --v LevelV 级别日志verbosity level--vmodule moduleSpec按文件过滤的日志级别设置格式为patternN的逗号分隔列表典型使用示例结合 pkg/cmd/cli/restore/create.go 中现代版本命令的Example文档与 v0.6.0 的参数集以下示例可直接替换为对应时代的语法# 基于备份 backup-1 创建名为 restore-1 的恢复 ark create restore restore-1 --from-backup backup-1 # 注意v0.6.0 语法为位置参数等价形式为 ark create restore backup-1 --restore-volumestrue # 只恢复备份中的 persistentvolumeclaims 与 persistentvolumes ark create restore backup-2 \ --include-resources persistentvolumeclaims,persistentvolumes # 将备份中 abc 命名空间的对象恢复到 def 命名空间 ark create restore backup-3 \ --namespace-mappings abc:def # 排除特定命名空间与特定资源类别 ark create restore backup-4 \ --exclude-namespaces kube-system \ --exclude-resources storageclasses.storage.k8s.io # 仅恢复匹配标签选择器的对象 ark create restore backup-5 --selector appnginx # 预演模式输出即将创建的 Restore 对象 YAML但不提交到集群 ark create restore backup-6 -o yaml需要说明的是上述--from-backup/--from-schedule用法来自当前仓库中 Velero 现代版 CLIvelero restore create [RESTORE_NAME] [--from-backup BACKUP_NAME | --from-schedule SCHEDULE_NAME]的演进形态v0.6.0 文档则以BACKUP位置参数表达恢复来源。两者在过滤与重映射参数上保持了高度一致可互相对照学习。从ark create restore到velero restore create源码级实现对照当前仓库中该命令的现代实现位于 pkg/cmd/cli/restore/create.go其核心逻辑与 v0.6.0 文档描述的ark create restore一脉相承主要分为三个阶段1. 参数绑定BindFlagsNewCreateCommand 中通过o.BindFlags(c.Flags())把全部 CLI 标志绑定到CreateOptions结构体CreateOptions 定义。值得注意的几个实现细节--restore-volumes、--preserve-nodeports、--include-cluster-resources等参数使用flag.OptionalBool类型并通过f.NoOptDefVal cmd.TRUE实现直接写标志名即等价于true的便捷写法BindFlags 实现这正是 v0.6.0 文档中optionalBool[true]的由来IncludeNamespaces的默认值为flag.NewStringArray(*)对应文档中(default *)NamespaceMappings使用flag.NewMap().WithEntryDelimiter(,).WithKeyValueDelimiter(:)即默认以逗号分隔多个映射、以冒号分隔源与目标命名空间NewCreateOptions。2. 校验逻辑ValidateValidate 阶段会执行多项前置校验恢复来源互斥--from-backup与--from-schedule必须且只能指定其一同时指定或同时为空都会报错either a backup or schedule must be specified, but not both标签选择器互斥--selector与--or-selector不能同时使用来源存在性检查指定--from-backup时会在客户端先Get对应 Backup 对象指定--from-schedule时会按schedule-name标签列出该调度产生的备份列表若为空则报No backups found for the schedule。相应的单元测试覆盖在 pkg/cmd/cli/restore/create_test.go其中包含同时指定 backup 与 schedule 时报错从不存在的备份创建恢复返回 not found等用例可作为命令行为的可验证依据。3. 组装与提交RunRun 阶段把各选项组装成api.Restore对象Spec中的IncludedNamespaces、ExcludedNamespaces、NamespaceMapping、LabelSelector、RestorePVs、IncludeClusterResources等字段一一对应 CLI 参数随后若指定了-o/--output通过output.PrintWithFormat直接打印对象而不提交否则调用o.client.Create(...)向集群提交 Restore 资源并输出Restore request xxx submitted successfully.若指定--wait则通过 Informer 监听 Restore 状态变化直到进入Completed、PartiallyFailed、Failed或FailedValidation终态期间可安全按ctrl-c中断等待而不影响后台恢复继续执行。由此可见v0.6.0 文档中的命令参数集在现代实现中得到了完整保留与扩展——新增了--from-schedule、--or-selector、--existing-resource-policy、--existing-volume-data-policy、--preserve-nodeports、--wait、--resource-modifier-configmap等进阶能力但include/exclude、namespace-mappings、selector、restore-volumes、include-cluster-resources、labels、output这些 v0.6.0 已确立的核心语义始终未变。命令族与周边工具ark create restore隶属于ark create命令族参见 ark_create.md同类命令还包括ark create backup、ark create schedule。此外ark_restore_create.md 记录了同一功能在ark restore子命令组下的等价入口ark restore create BACKUP恢复请求提交后可用 ark_restore_get.md 查询恢复状态、ark_restore_describe.md 查看恢复详情、ark_restore_logs.md 获取恢复日志、ark_restore_delete.md 删除恢复请求关于 Restore 在整体备份/恢复体系中的定位操作类型、标签约定、命名空间重映射、对象存储作为真相源等可进一步阅读 site/content/docs/v0.6.0/concepts.md。总结ark create restore是 Ark/Velero 恢复流程的入口命令其参数体系完整覆盖了恢复范围控制命名空间、资源、标签选择器、集群级资源取舍、卷快照恢复、命名空间重映射与输出格式预演等核心能力。以 v0.6.0 文档为起点对照当前仓库中 pkg/cmd/cli/restore/create.go 的实现可以看出这一命令历经版本演进其核心参数与三段式处理流程绑定 → 校验 → 组装提交保持了高度稳定为后续使用velero restore create提供了平滑的认知迁移路径。【免费下载链接】veleroBackup and migrate Kubernetes applications and their persistent volumes项目地址: https://gitcode.com/GitHub_Trending/ve/velero创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表