8.9. 解决故障节点来触发虚拟机故障切换
如果节点失败,并且没有在集群中部署 机器健康检查,则带有 RunStrategy: Always
配置的虚拟机(VM)不会被自动重新定位到健康的节点上。要触发虚拟机故障切换,您必须手动删除 Node
对象。
如果使用安装程序置备的基础架构安装集群,并且正确地配置了机器健康检查:
- 故障节点会被自动回收。
-
RunStrategy
被设置为Always
或RerunOnFailure
的虚拟机会自动调度到健康的节点上。
8.9.1. 先决条件
-
运行虚拟机的节点具有
NotReady
条件。 -
在故障节点中运行的虚拟机的
RunStrategy
设置为Always
。 -
已安装 OpenShift CLI(
oc
)。
8.9.2. 从裸机集群中删除节点
当您使用 CLI 删除节点时,节点对象会从 Kubernetes 中删除,但该节点上存在的 pod 不会被删除。任何未由复制控制器支持的裸机 pod 都无法从 OpenShift Container Platform 访问。由复制控制器支持的 Pod 会重新调度到其他可用的节点。您必须删除本地清单 pod。
流程
通过完成以下步骤,从裸机上运行的 OpenShift Container Platform 集群中删除节点:
将节点标记为不可调度:
$ oc adm cordon <node_name>
排空节点上的所有 pod:
$ oc adm drain <node_name> --force=true
如果节点离线或者无响应,此步骤可能会失败。即使节点没有响应,它仍然在运行写入共享存储的工作负载。为了避免数据崩溃,请在进行操作前关闭物理硬件。
从集群中删除节点:
$ oc delete node <node_name>
虽然节点对象现已从集群中删除,但它仍然可在重启后或 kubelet 服务重启后重新加入集群。要永久删除该节点及其所有数据,您必须弃用该节点。
- 如果您关闭了物理硬件,请重新打开它以便节点可以重新加入集群。
8.9.3. 验证虚拟机故障切换
在不健康节点上终止所有资源后,会为每个重新定位的虚拟机在健康的节点上自动创建新虚拟机实例(VMI)。要确认已创建了 VMI,使用 oc
CLI 查看所有 VMI。
8.9.3.1. 使用 CLI 列出所有虚拟机实例
您可以使用 oc
命令行界面(CLI)列出集群中的所有虚拟机实例(VMI),包括独立 VMI 和虚拟机拥有的实例。
流程
运行以下命令列出所有 VMI:
$ oc get vmis -A