10.2. 使用 director Operator 从 overcloud 中删除 Compute 节点


要从 overcloud 中删除 Compute 节点,您必须禁用 Compute 节点,将其标记为删除,并减少 compute OpenStackBaremetalSet 资源的节点数。

注意

如果您使用同一角色中的新节点扩展 overcloud,节点将重复利用主机名,从最低 ID 后缀和对应的 IP 保留开始。

前提条件

流程

  1. 访问 openstackclient 的远程 shell:

    $ oc rsh -n openstack openstackclient
    Copy to Clipboard Toggle word wrap
  2. 识别您要删除的 Compute 节点:

    $ openstack compute service list
    Copy to Clipboard Toggle word wrap
  3. 禁用节点上的 Compute 服务,以防止节点调度新实例:

    $ openstack compute service set <hostname> nova-compute --disable
    Copy to Clipboard Toggle word wrap
  4. 注解裸机节点,以防止 Metal3 启动节点:

    $ oc annotate baremetalhost <node> baremetalhost.metal3.io/detached=true
    $ oc logs --since=1h <metal3-pod> metal3-baremetal-operator | grep -i detach
    $ oc get baremetalhost <node> -o json | jq .status.operationalStatus
    "detached"
    Copy to Clipboard Toggle word wrap
    • <node > 替换为 BareMetalHost 资源的名称。
    • <metal3-pod > 替换为 metal3 pod 的名称。
  5. root 用户身份登录 Compute 节点,并关闭裸机节点:

    [root@compute-0 ~]# shutdown -h now
    Copy to Clipboard Toggle word wrap

    如果 Compute 节点无法访问,请完成以下步骤:

    1. root 用户身份登录 Controller 节点。
    2. 如果启用了 Instance HA,请禁用 Compute 节点的 STONITH 设备:

      [root@controller-0 ~]# pcs stonith disable <stonith_resource_name>
      Copy to Clipboard Toggle word wrap
      • <stonith_resource_name > 替换为与节点对应的 STONITH 资源的名称。资源名称使用 <resource_agent>-<host_mac> 格式。您可以在 fence.yaml 文件的 FencingConfig 部分查找资源代理和主机 MAC 地址。
    3. 使用 IPMI 关闭裸机节点。如需更多信息,请参阅您的硬件厂商文档。
  6. 检索与您要删除的节点对应的 BareMetalHost 资源:

    $ oc get openstackbaremetalset compute -o json | jq '.status.baremetalHosts | to_entries[] | "\(.key) => \(.value | .hostRef)"'
    "compute-0, openshift-worker-3"
    "compute-1, openshift-worker-4"
    Copy to Clipboard Toggle word wrap
  7. 要在 OpenStackBaremetalSet 资源中将 annotatedForDeletion 参数的状态更改为 true,请使用 osp-director.openstack.org/delete-host=true 注解 BareMetalHost 资源:

    $ oc annotate -n openshift-machine-api bmh/openshift-worker-3 osp-director.openstack.org/delete-host=true --overwrite
    Copy to Clipboard Toggle word wrap
  8. 可选:确认 OpenStackBaremetalSet 资源中 annotatedForDeletion 状态已更改为 true

    $ oc get openstackbaremetalset compute -o json -n openstack | jq .status
    {
      "baremetalHosts": {
        "compute-0": {
          "annotatedForDeletion": true,
          "ctlplaneIP": "192.168.25.105/24",
          "hostRef": "openshift-worker-3",
          "hostname": "compute-0",
          "networkDataSecretName": "compute-cloudinit-networkdata-openshift-worker-3",
          "provisioningState": "provisioned",
          "userDataSecretName": "compute-cloudinit-userdata-openshift-worker-3"
        },
        "compute-1": {
          "annotatedForDeletion": false,
          "ctlplaneIP": "192.168.25.106/24",
          "hostRef": "openshift-worker-4",
          "hostname": "compute-1",
          "networkDataSecretName": "compute-cloudinit-networkdata-openshift-worker-4",
          "provisioningState": "provisioned",
          "userDataSecretName": "compute-cloudinit-userdata-openshift-worker-4"
        }
      },
      "provisioningStatus": {
        "readyCount": 2,
        "reason": "All requested BaremetalHosts have been provisioned",
        "state": "provisioned"
      }
    }
    Copy to Clipboard Toggle word wrap
  9. 减少 compute OpenStackBaremetalSet 资源的 count 参数:

    $ oc patch openstackbaremetalset compute --type=merge --patch '{"spec":{"count":1}}' -n openstack
    Copy to Clipboard Toggle word wrap

    当您减少 OpenStackBaremetalSet 资源的资源数时,您可以触发对应的控制器来处理资源删除,这会导致以下操作:

    • director Operator 从 OpenStackIPSetOpenStackNetConfig 中删除对应的 IP 保留。
    • director Operator 将 OpenStackNet 资源中的 IP 保留条目标记为已删除:

      $ oc get osnet ctlplane -o json -n openstack | jq .status.reservations
      {
        "compute-0": {
          "deleted": true,
          "ip": "172.22.0.140"
        },
        "compute-1": {
          "deleted": false,
          "ip": "172.22.0.100"
        },
        "controller-0": {
          "deleted": false,
          "ip": "172.22.0.120"
        },
        "controlplane": {
          "deleted": false,
          "ip": "172.22.0.110"
        },
        "openstackclient-0": {
          "deleted": false,
          "ip": "172.22.0.251"
        }
      Copy to Clipboard Toggle word wrap
  10. 可选: 要使已删除的 OpenStackBaremetalSet 资源的 IP 保留可供其他角色使用,请在 OpenStackNetConfig 对象中将 spec.preserveReservations 参数的值设置为 false。
  11. 访问 openstackclient 的远程 shell:

    $ oc rsh openstackclient -n openstack
    Copy to Clipboard Toggle word wrap
  12. 从 overcloud 中删除 Compute 服务条目:

    $ openstack compute service list
    $ openstack compute service delete <service-id>
    Copy to Clipboard Toggle word wrap
  13. 检查 overcloud 中的 Compute 网络代理条目,如果存在它们,则将其删除:

    $ openstack network agent list
    $ for AGENT in $(openstack network agent list --host <scaled-down-node> -c ID -f value) ; do openstack network agent delete $AGENT ; done
    Copy to Clipboard Toggle word wrap
  14. openstackclient 退出:

    $ exit
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat