3.3. 关于机器健康检查
您可以使用 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
的值,则控制器会停止删除机器,您必须手动进行处理。
要停止检查,请删除自定义资源。
3.3.1. 部署机器健康检查时的限制
部署机器健康检查前需要考虑以下限制:
- 只有机器集拥有的机器才可以由机器健康检查修复。
- 目前不支持 control plane 机器,如果不健康,则不会被修复。
- 如果机器的节点从集群中移除,机器健康检查会认为机器不健康,并立即修复机器。
-
如果机器对应的节点在
nodeStartupTimeout
之后没有加入集群,则会修复机器。 -
如果
Machine
资源阶段为Failed
,则会立即修复机器。