Hooks
目录
Overview
自定义钩子是在集群内容器中运行的扩展命令。通过配置钩子,您可以在备份和恢复过程中执行定制操作。对于特殊配置需求,请联系技术支持。
Backup Hook
在备份执行过程中,当 Pod 正在备份时,可以在 Pod 内的容器中执行一个或多个命令。这些命令可以在 Pod 备份操作完成之前(pre
)或之后(post
)运行。
钩子可以配置在 schedule 资源的 .spec.template.spec.hooks
字段或 backup 资源的 .spec.hooks
字段下。
配置示例及参数说明:
hooks:
resources:
-
# 钩子名称,显示在日志中。
name: my-hook
# (可选)运行钩子的命名空间(数组)。如果未设置,钩子将在所有命名空间中运行。
includedNamespaces:
- '*'
# (可选)排除的命名空间(数组)。
excludedNamespaces:
- some-namespace
# 钩子运行的资源。目前仅支持 pods。
includedResources:
- pods
# (可选)目标资源的标签选择器。
labelSelector:
matchLabels:
app: velero
component: server
# 备份前执行的 Pod 操作(数组)。仅支持 exec 钩子。
pre:
-
exec:
# (可选)执行命令的容器名称。如果未设置,默认为 Pod 中的第一个容器。
container: my-container
# 要执行的命令(数组)。必填。
command:
- /bin/uname
- -a
# (可选)命令执行失败策略:Continue 或 Fail。默认:Fail。
onError: Fail
# (可选)命令执行超时时间。默认:30s。
timeout: 10s
# 备份后执行的 Pod 操作(数组)。仅支持 exec 钩子。
post:
# 同 pre
Restore Hooks
备份和恢复组件支持通过钩子在恢复任务期间或之后执行自定义操作。
支持两种类型的恢复钩子:
恢复钩子可以设置在 restore 资源的 .spec.hooks
字段中。配置示例及参数说明:
hooks:
resources:
# 钩子名称
- name: restore-hook-1
# (可选)运行钩子的命名空间(数组)。如果未设置,钩子将在所有命名空间中运行。
includedNamespaces:
- ns1
# (可选)排除的命名空间(数组)。
excludedNamespaces:
- ns3
# 钩子运行的资源。目前仅支持 pods。
includedResources:
- pods
# (可选)目标资源的标签选择器。
labelSelector:
matchLabels:
app: velero
component: server
# 钩子列表。支持 init 和 exec 类型。
postHooks:
- init:
# 作为 initContainers 添加的容器列表。
initContainers:
- name: restore-hook-init1
image: alpine:latest
volumeMounts:
- mountPath: /restores/pvc1-vm
name: pvc1-vm
command:
- /bin/ash
- -c
- echo -n "FOOBARBAZ" >> /restores/pvc1-vm/foobarbaz
- name: restore-hook-init2
image: alpine:latest
volumeMounts:
- mountPath: /restores/pvc2-vm
name: pvc2-vm
command:
- /bin/ash
- -c
- echo -n "DEADFEED" >> /restores/pvc2-vm/deadfeed
- exec:
# (可选)执行命令的容器名称。如果未设置,默认为 Pod 中的第一个容器。
container: my-container
# 要执行的命令(数组)。必填。
command:
- /bin/uname
- -a
# (可选)命令执行失败策略:Continue 或 Fail。默认:Fail。
onError: Fail
# (可选)命令执行超时时间。默认:30s。
timeout: 10s