13.3. 删除 Compute 节点
在某些情况下,您可能需要从 overcloud 中删除计算节点。例如,需要替换有问题的计算节点。
在从 overcloud 中删除计算节点前,先将该节点上的工作负载迁移到其他计算节点。请参见 第 11 章 在 Compute 节点之间迁移虚拟机了解更多详细信息。
步骤
查找 overcloud 配置:
$ source ~/stack/overcloudrc
禁用 overcloud 中传出节点上的 Compute 服务,以防止节点调度新的实例:
(overcloud) $ openstack compute service list (overcloud) $ openstack compute service set [hostname] nova-compute --disable
提示添加有关为何要使用
--disable-reason
选项禁用该服务的简短说明。如果您打算稍后重新部署 Compute 服务,则该说明很有用。查找 undercloud 配置:
(overcloud) $ source ~/stack/stackrc
在删除 overcloud 节点时,您必须使用本地模板文件更新 overcloud 堆栈。首先,确定 overcloud 堆栈的 UUID:
(undercloud) $ openstack stack list
找到要被删除的节点的 UUID:
(undercloud) $ openstack server list
运行以下命令来从栈中删除节点,并相应地更新计划:
(undercloud) $ openstack overcloud node delete --stack [STACK_UUID] --templates -e [ENVIRONMENT_FILE] [NODE1_UUID] [NODE2_UUID] [NODE3_UUID]
重要如果在创建 overcloud 时传递了额外的环境文件,请使用
-e
或--environment-file
选项再次传递它们来避免对 overcloud 进行不必要的手动更改。在继续进行操作前,确保
openstack overcloud node delete
命令已运行完。使用openstack stack list
命令检查overcloud
栈的状态是否已变为UPDATE_COMPLETE
。重要如果您打算使用相同的主机名重新部署 Compute 服务,则需要对重新部署的节点使用现有服务记录。如果是这样,则跳过此过程中的剩余步骤,继续按照 使用相同的主机名重新部署 Compute 服务中详述的说明操作。
从节点删除 Compute 服务:
(undercloud) $ source ~/stack/overcloudrc (overcloud) $ openstack compute service list (overcloud) $ openstack compute service delete [service-id]
从节点删除 Open vSwitch 代理:
(overcloud) $ openstack network agent list (overcloud) $ openstack network agent delete [openvswitch-agent-id]
将删除的 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