4.3. 部署机器健康检查

理解并部署机器健康检查。

重要

此过程不适用于使用手动置备的机器的集群。您只能在 Machine API 操作的集群中使用高级机器管理和扩展功能。

4.3.1. 关于机器健康检查

您可以使用 MachineHealthCheck 资源定义集群中的机器被视为不健康的条件。会自动修复满足条件的机器。

要监控机器健康状况,创建一个 MachineHealthCheck 自定义资源(CR),其中包含要监控的机器集合的标签以及要检查的条件,如维持 NotReady 状态 15 分钟,或在 node-problem-detector 中显示持久性状况。

监控 MachineHealthCheck CR 的控制器会检查您定义的条件。如果机器无法进行健康检查,则会自动删除机器并创建新的机器来代替它。删除机器之后,您会看到机器被删除事件。

注意

对于具有 master 角色的机器,机器健康检查会报告不健康的节点数量,但不会删除机器。例如:

输出示例

$ oc get machinehealthcheck example -n openshift-machine-api

NAME      MAXUNHEALTHY   EXPECTEDMACHINES   CURRENTHEALTHY
example   40%            3                  1

为限制删除机器造成的破坏性影响,控制器一次仅排空并删除一个节点。如果目标机器池中不健康的机器池中不健康的机器数量大于 maxUnhealthy 的值,则控制器会停止删除机器,您必须手动进行处理。

要停止检查,请删除自定义资源。

4.3.1.1. Bare Metal 上的 MachineHealthCheck

在裸机集群上删除机器会触发重新置备裸机主机。通常,裸机重新置备是一个需要较长时间的过程,在这个过程中,集群缺少计算资源,应用程序可能会中断。要将默认补救过程从机器删除到主机的节能周期,请使用 machine.openshift.io/remediation-strategy: external-baremetal 注解来注解 MachineHealthCheck 资源。

设置注解后,不健康的机器会使用 BMC 凭证进行节能。

4.3.1.2. 部署机器健康检查时的限制

部署机器健康检查前需要考虑以下限制:

  • 只有机器集拥有的机器才可以由机器健康检查修复。
  • 目前不支持 control plane 机器,如果不健康,则不会被修复。
  • 如果机器的节点从集群中移除,机器健康检查会认为机器不健康,并立即修复机器。
  • 如果机器对应的节点在 nodeStartupTimeout 之后没有加入集群,则会修复机器。
  • 如果 Machine 资源阶段为 Failed,则会立即修复机器。