第 3 章 greenboot 健康检查
Greenboot 是基于 RPM-OSTree 的系统上 systemd
服务的通用健康检查框架。microshift-greenboot
RPM 和 greenboot-default-health-checks
是您可以安装的可选 RPM 软件包。greenboot 用于评估系统健康状况,并在软件出现问题时自动回滚到最后一个健康状态。
当您需要检查软件问题并在边缘设备上执行系统回滚限制或不存在时,这个健康检查框架特别有用。当安装和配置健康检查脚本时,每次系统启动时健康检查都会运行。
使用 greenboot 可减少在更新过程中锁定边缘设备的风险,并在更新失败时防止服务中断。当检测到失败时,系统会使用 rpm-ostree
回滚功能引导至最后一个已知的工作配置中。
MicroShift 健康检查脚本包含在 microshift-greenboot
RPM 中。greenboot-default-health-checks
RPM 包括健康检查脚本,验证 DNS 和 ostree
服务是否可以访问。您还可以根据您正在运行的工作负载创建自己的健康检查脚本。您可以编写一个来验证应用程序是否已启动,例如:
在不使用 OSTree 的系统上更新失败时,无法进行回滚。即使可能运行健康检查,也是如此。
3.1. greenboot 如何使用目录运行脚本
从四个 /etc/greenboot
目录运行的健康检查脚本。这些脚本按字母顺序运行。当您为工作负载配置脚本时请注意这一点。
当系统启动时,greenboot 在 required.d
目录中运行脚本,并 want .d
目录。根据这些脚本的结果,greenboot 会继续启动或尝试回滚,如下所示:
-
系统如预期:当
required.d
目录中的所有脚本都成功时,greenboot 会运行/etc/greenboot/green.d
目录中存在的任何脚本。 -
系统问题:如果
required.d
目录中的任何脚本失败,greenboot 会运行red.d
目录中的任何 prerollback 脚本,然后重启系统。
greenboot 将脚本和健康检查输出重定向到系统日志。登录后,每日信息会提供整个系统健康输出。
3.1.1. Greenboot 目录详情
从任何脚本返回非零退出代码意味着该脚本失败。greenboot 在尝试回滚到之前的版本前,会多次重启系统以重试脚本。
/etc/greenboot/check/required.d
包含不能失败的健康检查。-
如果脚本失败,则 greenboot 默认重试三次。您可以通过将
GREENBOOT_MAX_BOOTS
参数设置为所需的重试次数,在/etc/greenboot/greenboot.conf
文件中配置重试次数。 - 当所有重试失败后,greenboot 会在一个可用时自动启动回滚。如果没有回滚,系统日志输出显示需要手动干预。
-
MicroShift 的
40_microshift_running_check.sh
健康检查脚本安装在这个目录中。
-
如果脚本失败,则 greenboot 默认重试三次。您可以通过将
/etc/greenboot/check/wanted.d
包含允许失败的健康脚本,而不会导致系统被回滚。- 如果这些脚本失败,greenboot 会记录失败,但不会启动一个回滚。
-
/etc/greenboot/green.d
包含在 greenboot 声明启动成功后运行的脚本。 -
/etc/greenboot/red.d
包含在 greenboot 声明了启动后运行的脚本,包括40_microshift_pre_rollback.sh
prerollback 脚本。这个脚本在系统回滚前执行。该脚本执行 MicroShift pod 和 OVN-Kubernetes 清理,以避免在将系统回滚到以前的版本后出现潜在的冲突。