11.4. 删除失败的节点以触发虚拟机故障切换
如果节点失败,并且没有在集群中部署 机器健康检查,则带有 RunStrategy: Always
配置的虚拟机(VM)不会被自动重新定位到健康的节点上。要触发虚拟机故障切换,您必须手动删除 Node
对象。
如果使用安装程序置备的基础架构安装集群并正确配置机器健康检查,则会出现以下事件: https://docs.redhat.com/en/documentation/openshift_container_platform/4.14/html-single/deploying_installer-provisioned_clusters_on_bare_metal/#ipi-install-overview
- 故障节点会被自动回收。
-
runStrategy
被设置为Always
或RerunOnFailure
的虚拟机会自动调度到健康的节点上。
11.4.1. 先决条件
-
运行虚拟机的节点具有
NotReady
条件。 -
在故障节点中运行的虚拟机的
runStrategy
设置为Always
。 -
已安装 OpenShift CLI(
oc
)。
11.4.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 服务重启后重新加入集群。要永久删除该节点及其所有数据,您必须弃用该节点。
- 如果您关闭了物理硬件,请重新打开它以便节点可以重新加入集群。
11.4.3. 验证虚拟机故障切换
在不健康节点上终止所有资源后,会为每个重新定位的虚拟机在健康的节点上自动创建新虚拟机实例(VMI)。要确认已创建了 VMI,使用 oc
CLI 查看所有 VMI。
11.4.3.1. 使用 CLI 列出所有虚拟机实例
您可以使用 oc
命令行界面(CLI)列出集群中的所有虚拟机实例(VMI),包括独立 VMI 和虚拟机拥有的实例。
流程
运行以下命令列出所有 VMI:
$ oc get vmis -A