×

如果节点发生故障并且节点健康检查未部署在您的集群上,则配置了runStrategy: Always的虚拟机 (VM) 不会自动重新定位到正常的节点。

先决条件

  • 运行虚拟机的节点具有NotReady状态

  • 在失败的节点上运行的虚拟机已将runStrategy设置为Always

  • 您已安装 OpenShift CLI (oc)。

从裸机集群中删除节点

使用 CLI 删除节点时,节点对象会在 Kubernetes 中删除,但节点上存在的 Pod 不会删除。任何不受复制控制器支持的裸 Pod 都将无法访问 OpenShift Container Platform。受复制控制器支持的 Pod 将重新调度到其他可用节点。您必须删除本地清单 Pod。

步骤

通过完成以下步骤,从运行在裸机上的 OpenShift Container Platform 集群中删除节点

  1. 将节点标记为不可调度

    $ oc adm cordon <node_name>
  2. 排出节点上的所有 Pod

    $ oc adm drain <node_name> --force=true

    如果节点脱机或无响应,此步骤可能会失败。即使节点无响应,它也可能仍在运行写入共享存储的工作负载。为避免数据损坏,请在继续操作之前关闭物理硬件。

  3. 从集群中删除节点

    $ oc delete node <node_name>

    尽管节点对象现在已从集群中删除,但它仍然可以在重新引导后或重新启动 kubelet 服务后重新加入集群。要永久删除节点及其所有数据,您必须停用节点

  4. 如果您关闭了物理硬件电源,请将其重新开启,以便节点可以重新加入集群。

验证虚拟机故障转移

在不健康节点上终止所有资源后,系统会为每个重新定位的虚拟机在健康节点上自动创建一个新的虚拟机实例 (VMI)。要确认 VMI 是否已创建,请使用 oc CLI 查看所有 VMI。

使用 CLI 列出所有虚拟机实例

您可以使用 oc 命令行界面 (CLI) 列出集群中的所有虚拟机实例 (VMI),包括独立 VMI 和虚拟机拥有的 VMI。

步骤
  • 运行以下命令列出所有 VMI:

    $ oc get vmis -A