第 11 章 部署机器健康检查
您可以配置和部署机器健康检查,以自动修复机器池中损坏的机器。
此过程不适用于使用手动置备的机器的集群。您只能在 Machine API 操作的集群中使用高级机器管理和扩展功能。
11.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
的值,则控制器会停止删除机器,您必须手动进行处理。
要停止检查,请删除自定义资源。
11.1.1. Bare Metal 上的 MachineHealthCheck
在裸机集群上删除机器会触发重新置备裸机主机。通常,裸机重新置备是一个需要较长时间的过程,在这个过程中,集群缺少计算资源,应用程序可能会中断。要将默认补救过程从机器删除到主机的节能周期,请使用 machine.openshift.io/remediation-strategy: external-baremetal
注解来注解 MachineHealthCheck 资源。
设置注解后,不健康的机器会使用 BMC 凭证进行节能。
11.1.2. 部署机器健康检查时的限制
部署机器健康检查前需要考虑以下限制:
- 只有机器集拥有的机器才可以由机器健康检查修复。
- 目前不支持 control plane 机器,如果不健康,则不会被修复。
- 如果机器的节点从集群中移除,机器健康检查会认为机器不健康,并立即修复机器。
-
如果机器对应的节点在
nodeStartupTimeout
之后没有加入集群,则会修复机器。 -
如果
Machine
资源阶段为Failed
,则会立即修复机器。
其他资源
-
有关您可以在
MachineHealthCheck
CR 中定义的节点状况的更多信息,请参阅关于列出集群中的所有节点。 - 有关短电路的更多信息,请参阅 Short-circuiting 机器健康检查补救。