7.4. 从数据平面中删除 Compute 节点
您可以从数据平面上的节点集合中删除 Compute 节点。如果从节点集合中删除所有节点,则还必须从 data plane 中删除节点集。
先决条件
-
以具有
cluster-admin权限的用户身份登录 RHOCP 集群。 - Compute 节点上的工作负载已迁移到其他 Compute 节点。
流程
访问
openstackclientpod 的远程 shell:$ oc rsh -n openstack openstackclient检索您要删除的 Compute 节点的 IP 地址:
$ openstack hypervisor list检索 Compute 节点列表,以识别您要删除的节点的名称和 UUID:
$ openstack compute service list禁用要删除的 Compute 节点上的
nova-compute服务:$ openstack compute service set <hostname> nova-compute --disable提示使用
--disable-reason选项添加有关为何要禁用该服务的简短说明。如果您打算重新部署 Compute 服务,这很有用。退出
OpenStackClientpod:$ exitSSH 到要删除的 Compute 节点,并停止
ovn和nova-compute容器:$ ssh -i <key_file_name> cloud-admin@<node_IP_address> [cloud-admin@<hostname> ~]$ sudo systemctl stop edpm_ovn_controller [cloud-admin@<hostname> ~]$ sudo systemctl stop edpm_ovn_metadata_agent [cloud-admin@<hostname> ~]$ sudo systemctl stop edpm_nova_compute-
将 <
key_file_name> 替换为您创建的 SSH 密钥对文件的名称和位置,以便 Ansible 管理 RHEL 节点。 -
将
<node_IP_address> 替换为在第 2 步中获取的 Compute 节点的 IP 地址。
-
将 <
删除管理
ovn和nova-compute容器的systemd单元文件,以防止在删除的节点重启时自动启动和注册代理:[cloud-admin@<hostname> ~]$ sudo rm -f /etc/systemd/system/edpm_ovn_controller [cloud-admin@<hostname> ~]$ sudo rm -f /etc/systemd/system/edpm_ovn_metadata_agent [cloud-admin@<hostname> ~]$ sudo rm -f /etc/systemd/system/edpm_nova_compute断开与 Compute 节点的连接:
$ exit访问
openstackclient的远程 shell:$ oc rsh -n openstack openstackclient删除要删除的 Compute 节点的网络代理:
$ openstack network agent list [--host <hostname>] $ openstack network agent delete <agent_id>删除要删除的 Compute 节点的
nova-compute服务:$ openstack compute service delete <node_uuid>-
将
<node_uuid> 替换为您要删除在第 3 步中检索的节点 UUID。
-
将
退出
OpenStackClientpod:$ exit从
OpenStackDataPlaneNodeSetCR 中删除节点:$ oc patch openstackdataplanenodeset/<node_set_name> --type json --patch '[{ "op": "remove", "path": "/spec/nodes/<node_name>" }]'-
将
<node_set_name> 替换为节点所属的OpenStackDataPlaneNodeSetCR 的名称。 -
将
<node_name> 替换为OpenStackDataPlaneNodeSetCR 的nodes部分中定义的节点名称。
-
将
在工作站上创建一个文件,以定义
OpenStackDataPlaneDeploymentCR,以便在移除 Compute 节点的情况下更新节点集:apiVersion: dataplane.openstack.org/v1beta1 kind: OpenStackDataPlaneDeployment metadata: name: <node_set_deployment_name>-
将
<node_set_deployment_name> 替换为OpenStackDataPlaneDeploymentCR 的名称。名称必须是唯一的,必须包含小写字母数字字符(hyphen)或.(句点),且必须以字母数字字符开头和结尾。
提示为定义文件和
OpenStackDataPlaneDeploymentCR 提供唯一和描述性名称,以指示修改的节点集的用途。-
将
添加从中删除节点的
OpenStackDataPlaneNodeSetCR:spec: nodeSets: - <nodeSet_name>指定
OpenStackDataPlaneDeploymentCR 应该仅在部署列出的节点集合时运行ssh-known-hosts服务:spec: servicesOverride: - ssh-known-hosts-
保存
OpenStackDataPlaneDeploymentCR 部署文件。 部署
ssh-known-hosts服务,以从剩余的节点上的已知主机列表中删除删除的节点:$ oc create -f openstack_data_plane_deploy.yaml -n openstack您可以在部署执行时查看 Ansible 日志:
$ oc get pod -l app=openstackansibleee -w $ oc logs -l app=openstackansibleee -f --max-log-requests 10如果
oc logs命令返回类似以下错误的错误,请提高--max-log-requests值:error: you are attempting to follow 19 log streams, but maximum allowed concurrency is 10, use --max-log-requests to increase the limit验证修改后的
OpenStackDataPlaneNodeSetCR 是否已部署:$ oc get openstackdataplanedeployment -n openstack NAME NODESETS STATUS MESSAGE openstack-data-plane ["openstack-data-plane"] True Setup Complete $ oc get openstackdataplanenodeset -n openstack NAME STATUS MESSAGE openstack-data-plane True NodeSet Ready有关返回状态的含义的信息,请参阅 在 OpenShift 上部署 Red Hat OpenStack Services 中的 Data plane 条件和状态。
如果状态表示 data plane 尚未部署,则对部署进行故障排除。如需更多信息,请参阅在 OpenShift 上部署 Red Hat OpenStack Services 中的对 data plane 创建和部署进行故障排除。