目录
引言
YS1000是国产企业级Kubernetes应用的备份容灾商业解决方案,为企业提供易于使用、可扩展、安全的解决方案,用于Kubernetes核心容器应用在多云架构下的备份恢复、容灾保护及迁移。本文介绍了其中一个重要功能——钩子程序。钩子程序是一段预置或者自定义的小程序, 可以分别在备份或者恢复任务执行前,执行后或者任务失败时等阶段执行几乎任何指令,指令可以是一个内置的指令,可以是一个 Linux 的命令,也可以是一段完整的 Shell 或者 Python 脚本。
本文以一个内置命令 pod-checker 为例,介绍了在备份前使用YS1000钩子程序对应用的Pod进行检查,如果Pod不在正常状态,就停止这次备份并把它标成失败,以防止这种无效的备份被用在后续的恢复中。
实验环境
-
Kubernetes 版本
kubectl get node NAME STATUS ROLES AGE VERSION ecs-e224-0001 Ready control-plane,master 24d v1.23.8
-
YS1000 版本
helm list -n ys1000 NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION qiming-operator ys1000 1 2022-12-08 15:26:49.765681838 +0800 CST deployed ys1000-2.10.2 2.10.2
-
确认备份前存在一个状态异常的Pod
kubectl get pod -n gss NAME READY STATUS RESTARTS AGE gss-78c457545d-9rpgw 0/1 CrashLoopBackOff 3176 (62s ago) 11d
实验步骤
创建钩子程序
-
在YS1000 UI左侧导航栏选择钩子程序,在页面右侧点击创建钩子程序
-
输入钩子程序的名称, 选择目标集群,指定重试次数,超时时间。如果你有需要,还可以指定是否可以忽略执行错误,以及执行过程中所需的环境变量等。
-
在执行阶段中勾选任务执行之前, 选择模版命令, 并输入pod-checker
-
点击创建后,在页面上可以看到新创建的钩子程序
创建备份计划
- 在YS1000 UI左侧导航栏选择集群应用备份,在页面右侧点击创建应用备份
-
按照向导创建备份计划,在钩子程序这一步,勾选是否启用,然后在备份前执行中选择刚才创建的hook
-
完成备份计划的创建
创建备份任务
- 选中刚才创建的备份计划,点击备份,点击确认
-
备份任务开始执行,一段时间之后,状态会显示失败,原因是钩子程序失败。说明我们定义的钩子程序发现了这个异常的Pod,从而阻止了备份的进行
-
点击任务的详情,可以看到一些更详细的信息
总结
以上步骤通过一个简单的内置指令,演示了钩子程序的使用场景和使用方式。除了一些内置的指令,我们还可以根据需求自行定制更复杂的钩子程序,甚至可以抛开默认的钩子程序镜像,开发自己的钩子镜像,从而执行任何想要的操作