13.3. 删除 Compute 节点

在某些情况下,您可能需要从 overcloud 中删除计算节点。例如,需要替换有问题的计算节点。

重要

在从 overcloud 中删除计算节点前,先将该节点上的工作负载迁移到其他计算节点。请参见 第 11 章 在 Compute 节点之间迁移虚拟机了解更多详细信息。

步骤

  1. 查找 overcloud 配置:

    $ source ~/stack/overcloudrc
  2. 禁用 overcloud 中传出节点上的 Compute 服务,以防止节点调度新的实例:

    (overcloud) $ openstack compute service list
    (overcloud) $ openstack compute service set [hostname] nova-compute --disable
    提示

    添加有关为何要使用 --disable-reason 选项禁用该服务的简短说明。如果您打算稍后重新部署 Compute 服务,则该说明很有用。

  3. 查找 undercloud 配置:

    (overcloud) $ source ~/stack/stackrc
  4. 在删除 overcloud 节点时,您必须使用本地模板文件更新 overcloud 堆栈。首先,确定 overcloud 堆栈的 UUID:

    (undercloud) $ openstack stack list
  5. 找到要被删除的节点的 UUID:

    (undercloud) $ openstack server list
  6. 运行以下命令来从栈中删除节点,并相应地更新计划:

    (undercloud) $ openstack overcloud node delete --stack [STACK_UUID] --templates -e [ENVIRONMENT_FILE] [NODE1_UUID] [NODE2_UUID] [NODE3_UUID]
    重要

    如果在创建 overcloud 时传递了额外的环境文件,请使用 -e--environment-file 选项再次传递它们来避免对 overcloud 进行不必要的手动更改。

  7. 在继续进行操作前,确保 openstack overcloud node delete 命令已运行完。使用 openstack stack list 命令检查 overcloud 栈的状态是否已变为 UPDATE_COMPLETE

    重要

    如果您打算使用相同的主机名重新部署 Compute 服务,则需要对重新部署的节点使用现有服务记录。如果是这样,则跳过此过程中的剩余步骤,继续按照 使用相同的主机名重新部署 Compute 服务中详述的说明操作。

  8. 从节点删除 Compute 服务:

    (undercloud) $ source ~/stack/overcloudrc
    (overcloud) $ openstack compute service list
    (overcloud) $ openstack compute service delete [service-id]
  9. 从节点删除 Open vSwitch 代理:

    (overcloud) $ openstack network agent list
    (overcloud) $ openstack network agent delete [openvswitch-agent-id]
  10. 将删除的 Compute 服务作为资源提供商从放置服务中移除:

    (overcloud) $ openstack resource provider list
    (overcloud) $ openstack resource provider delete [uuid]
    注意

    要使用放置服务,请安装 python2-osc-placement 软件包。

现在,可以安全地把节点从 overcloud 中删除,并将它部署用于其他目的。

使用相同的主机名重新部署 Compute 服务

要重新部署禁用的 Compute 服务,请在具有相同主机名的节点重新启动之后再重新启用。例如:

(overcloud) $ openstack compute service set compute-1.localdomain nova-compute --disable --disable-reason "gets re-provisioned"
(overcloud) $ openstack compute service list --long
...
| 80 | nova-compute | compute-1.localdomain | nova  | disabled | up | 2018-07-13T14:35:04.000000 | gets re-provisioned |
...
(overcloud) $ openstack compute service set compute-1.localdomain nova-compute --enable