管理适用于 Kubernetes 工作负载的NetApp备份和恢复执行挂钩模板
执行挂钩是一种自定义操作,您可以将其配置为与托管 Kubernetes 应用程序的数据保护操作一起运行。例如,如果您有一个数据库应用程序,则可以使用执行挂钩在快照之前暂停所有数据库事务,并在快照完成后恢复事务。这确保了应用程序一致的快照。创建执行钩子模板时,您可以指定钩子的类型、要运行的脚本以及确定钩子适用于哪些容器的任何过滤器。然后,您可以使用模板将执行挂钩与您的应用程序关联起来。
|
默认情况下, NetApp Backup and Recovery 会在数据保护操作期间自动冻结和解冻某些应用程序(例如 KubeVirt)的文件系统。您可以选择根据Trident保护文档中的说明全局或针对特定应用程序禁用此行为:
|
组织管理员或SnapCenter管理员。"了解NetApp备份和恢复访问角色" 。 "了解所有服务的NetApp控制台访问角色" 。
执行钩子的类型
NetApp Backup and Recovery 根据运行时间支持以下类型的执行挂钩:
-
预快照
-
快照后
-
预备份
-
备份后
-
恢复后
执行顺序
当运行数据保护操作时,执行挂钩事件按以下顺序发生:
-
任何适用的自定义预操作执行挂钩都在适当的容器上运行。您可以根据需要创建和运行任意数量的自定义预操作挂钩,但这些挂钩在操作之前的执行顺序既无法保证也无法配置。
-
如果适用,则会发生文件系统冻结。
-
执行数据保护操作。
-
如果适用,冻结的文件系统将被解冻。
-
任何适用的自定义后操作执行挂钩都在适当的容器上运行。您可以根据需要创建和运行任意数量的自定义后操作挂钩,但操作后这些挂钩的执行顺序既无法保证也无法配置。
如果您创建多个相同类型的执行挂钩(例如,预快照),则无法保证这些挂钩的执行顺序。但是,不同类型的钩子的执行顺序是有保证的。例如,以下是具有所有不同类型钩子的配置的执行顺序:
-
快照前钩子执行
-
快照后钩子执行
-
执行备份前挂钩
-
执行备份后钩子
|
在生产环境中启用执行挂钩脚本之前,您应该始终对其进行测试。您可以使用“kubectl exec”命令方便地测试脚本。在生产环境中启用执行挂钩后,测试生成的快照和备份以确保它们一致。您可以通过将应用程序克隆到临时命名空间、恢复快照或备份,然后测试应用程序来执行此操作。 |
|
如果快照前执行钩子添加、更改或删除 Kubernetes 资源,则这些更改将包含在快照或备份以及任何后续恢复操作中。 |
关于自定义执行钩子的重要说明
在为您的应用程序规划执行挂钩时,请考虑以下事项。
-
执行钩子必须使用脚本来执行操作。许多执行钩子可以引用同一个脚本。
-
执行钩子需要以可执行shell脚本的格式编写。
-
脚本大小限制为 96KB。
-
执行挂钩设置和任何匹配标准用于确定哪些挂钩适用于快照、备份或恢复操作。
|
由于执行钩子通常会减少或完全禁用其所针对的应用程序的功能,因此您应该始终尝试尽量减少自定义执行钩子的运行时间。如果您启动带有相关执行挂钩的备份或快照操作,但随后取消它,则如果备份或快照操作已经开始,则仍允许挂钩运行。这意味着备份后执行挂钩中使用的逻辑不能假定备份已完成。 |
执行钩子过滤器
当您为应用程序添加或编辑执行挂钩时,您可以向执行挂钩添加过滤器来管理该挂钩将匹配哪些容器。过滤器对于在所有容器上使用相同容器镜像但可能将每个镜像用于不同目的的应用程序(例如 Elasticsearch)很有用。过滤器允许您创建执行挂钩在某些但不一定是所有相同容器上运行的场景。如果为单个执行挂钩创建多个过滤器,它们将通过逻辑 AND 运算符组合在一起。每个执行挂钩最多可以有 10 个活动过滤器。
添加到执行挂钩的每个过滤器都使用正则表达式来匹配集群中的容器。当钩子与容器匹配时,钩子将在该容器上运行其关联的脚本。过滤器的正则表达式使用正则表达式 2 (RE2) 语法,该语法不支持创建从匹配列表中排除容器的过滤器。有关NetApp Backup and Recovery 在执行钩子过滤器中支持的正则表达式的语法的信息,请参见 "正则表达式 2 (RE2) 语法支持"。
|
如果将命名空间过滤器添加到在恢复或克隆操作后运行的执行挂钩,并且恢复或克隆源和目标位于不同的命名空间中,则命名空间过滤器仅适用于目标命名空间。 |
执行钩子示例
访问 "NetApp Verda GitHub 项目"下载流行应用程序(如 Apache Cassandra 和 Elasticsearch)的真实执行挂钩。您还可以查看示例并获得构建您自己的自定义执行挂钩的想法。
创建执行钩子模板
您可以创建自定义执行挂钩模板,用于在应用程序上执行数据保护操作之前或之后执行操作。
-
在控制台中,转到*保护*>*备份和恢复*。
-
选择“设置”选项卡。
-
展开*执行钩子模板*部分。
-
选择*创建执行钩子模板*。
-
输入执行挂钩的名称。
-
(可选)选择一种钩子类型。例如,还原后钩子会在还原操作完成后运行。
-
在 Script 文本框中,输入要作为执行挂钩模板的一部分运行的可执行 shell 脚本。或者,您可以选择*上传脚本*来上传脚本文件。
-
选择“创建”。
模板已创建并出现在*执行挂钩模板*部分的模板列表中。