11.4. 使用预置备节点配置基本 overcloud
本章包含基本配置流程,可用于使用预置备节点配置 Red Hat OpenStack Platform (RHOSP) 环境。这种情境与标准 overcloud 创建情境有所不同,具体体现在以下几个方面:
- 您可以使用外部工具置备节点,让 director 仅控制 overcloud 的配置。
- 您无需依赖 director 的置备方法,可直接使用节点。如果您想创建没有电源管理控制的 overcloud 或使用具有 DHCP/PXE 引导限制的网络,该方法很有用。
- director 不使用 OpenStack Compute (nova)、OpenStack Bare Metal (ironic) 或者 OpenStack Image (glance) 来管理节点。
- 预置备的节点可以使用不依赖于 QCOW2 overcloud-full 镜像的自定义分区布局。
这种情境仅包括没有自定义功能的基本配置。
您无法将预置备节点与 director 置备的节点合并。
11.4.1. 预置备节点要求
在开始使用预置备节点部署 overcloud 前,请确保环境中存在以下配置:
- 您在 第 7 章 在 undercloud 上安装 director 中创建的 director 节点。
- 节点的一组裸机。所需的节点数量由您需要创建的 overcloud 类型所决定。这些机器必须符合为每个节点类型设定的要求。这些节点需要 Red Hat Enterprise Linux 9.0 作为主机操作系统安装。红帽建议使用最新的可用版本。
- 用于管理预置备节点的一个网络连接。本情境需要具备对节点的不间断 SSH 访问权限以进行编配代理配置。
Control Plane 网络的一个网络连接。这种网络具备两种主要情境:
将 Provisioning 网络用作 Control Plane,这种是默认情境。这个网络通常是从预置备节点到 director 的第 3 层 (L3) 可路由网络连接。本情境示例使用以下 IP 地址分配:
表 11.10. Provisioning 网络 IP 分配信息 节点名 IP 地址 Director
192.168.24.1
控制器 0
192.168.24.2
计算 0
192.168.24.3
- 使用单独的网络。如果 director 的 Provisioning 网络是私有非路由网络,则可从任何子网定义节点的 IP 地址,通过公共 API 端点与 director 通信。有关这种情况要求的详情请参考 第 11.4.6 节 “为预置备节点使用单独网络”。
- 本示例中的所有其他网络类型使用 Control Plane 网络来提供 OpenStack 服务。不过,您可以为其他网络流量类型创建额外的网络。
-
如果有任何节点使用 Pacemaker 资源,服务用户
hacluster
和服务组haclient
必须具有 189 的 UID/GID。这是因为 CVE-2018-16877。如果与操作系统一起安装了 Pacemaker,则安装会自动创建这些 ID。如果错误设置 ID 值,请按照文章 OpenStack 小幅更新/快进升级可能在 controller 节点上在 pacemaker 步骤失败,显示消息“Could not evaluate: backup_cib” 中的步骤来更改 ID 值。 -
要防止某些服务绑定到不正确的 IP 地址并导致部署失败,请确保
/etc/hosts
文件不包含node-name=127.0.0.1
映射。
11.4.2. 在预置备节点上创建用户
使用预置备节点配置 overcloud 时,director 需要对 overcloud 节点进行 SSH 访问。在预置备的节点上,您必须创建一个使用 SSH 密钥身份验证的用户,并为该用户配置免密码 sudo 访问。在预置备的节点上创建用户后,可以结合使用 --overcloud-ssh-user
和 --overcloud-ssh-key
选项及 openstack overcloud deploy
命令,创建具有预置备节点的 overcloud。
默认情况下,overcloud SSH 用户和 overcloud SSH 密钥的值是 stack
用户和 ~/.ssh/id_rsa
。要创建 stack
用户,请完成以下步骤。
步骤
在每个 overcloud 节点上,创建
stack
用户并设定密码。例如,在 Controller 节点上运行以下命令:[root@controller-0 ~]# useradd stack [root@controller-0 ~]# passwd stack # specify a password
进行以下操作以使这个用户使用
sudo
时不需要输入密码:[root@controller-0 ~]# echo "stack ALL=(root) NOPASSWD:ALL" | tee -a /etc/sudoers.d/stack [root@controller-0 ~]# chmod 0440 /etc/sudoers.d/stack
在所有预置备节点上创建并配置
stack
用户后,将stack
用户的公共 SSH 密钥从 director 节点复制到每个 overcloud 节点。例如,要将 director 的公共 SSH 密钥复制到 Controller 节点,请运行以下命令:[stack@director ~]$ ssh-copy-id stack@192.168.24.2
要复制 SSH 密钥,您可能必须在每个 overcloud 节点的 SSH 配置中临时设置 PasswordAuthentication Yes
。复制 SSH 密钥后,设置 PasswordAuthentication No
,并在以后使用 SSH 密钥进行身份验证。
11.4.3. 为预置备节点注册操作系统
每个节点需要具备访问红帽订阅的权限。在每个节点上完成以下步骤,将节点注册到 Red Hat Content Delivery Network 中。以 root
用户身份或具有 sudo
特权的用户身份执行命令。
仅启用列出的软件仓库。其他软件仓库可能导致软件包和软件冲突。请勿启用任何其他软件仓库。
步骤
运行注册命令,按照提示输入您的客户门户用户名和密码:
[root@controller-0 ~]# sudo subscription-manager register
查找 Red Hat OpenStack Platform 17.0 的权利池:
[root@controller-0 ~]# sudo subscription-manager list --available --all --matches="Red Hat OpenStack"
使用上一步中的池 ID 以附加 Red Hat OpenStack Platform 16 权利:
[root@controller-0 ~]# sudo subscription-manager attach --pool=pool_id
禁用所有默认软件仓库:
[root@controller-0 ~]# sudo subscription-manager repos --disable=*
启用所需的 Red Hat Enterprise Linux 软件仓库:
[root@controller-0 ~]# sudo subscription-manager repos \ --enable=rhel-9-for-x86_64-baseos-eus-rpms \ --enable=rhel-9-for-x86_64-appstream-eus-rpms \ --enable=rhel-9-for-x86_64-highavailability-eus-rpms \ --enable=openstack-beta-for-rhel-9-x86_64-rpms \ --enable=fast-datapath-for-rhel-9-x86_64-rpms
如果 overcloud 使用 Ceph Storage 节点,请启用相关的 Ceph Storage 软件仓库:
[root@cephstorage-0 ~]# sudo subscription-manager repos \ --enable=rhel-9-for-x86_64-baseos-rpms \ --enable=rhel-9-for-x86_64-appstream-rpms \ --enable=openstack-beta-deployment-tools-for-rhel-9-x86_64-rpms
锁定除 Red Hat Ceph Storage 节点外的所有 overcloud 节点上的 RHEL 版本:
[root@controller-0 ~]# sudo subscription-manager release --set=9.0
更新您的系统,确保您具备最新的基础系统软件包:
[root@controller-0 ~]# sudo dnf update -y [root@controller-0 ~]# sudo reboot
节点现在可供您的 overcloud 使用。
11.4.4. 配置对 director 的 SSL/TLS 访问权限
如果 director 使用 SSL/TLS,那么预置备节点需要用于签署 director 的 SSL/TLS 证书的证书授权机构文件。如果使用自己的证书颁发机构(CA),请在每个 overcloud 节点上执行以下操作。
步骤
-
将证书授权机构文件复制到各预置备节点上的
/etc/pki/ca-trust/source/anchors/
目录中。 在每个 overcloud 节点上运行以下命令:
[root@controller-0 ~]# sudo update-ca-trust extract
这些步骤将确保 overcloud 节点可以通过 SSL/TLS 访问 director 的公共 API。
11.4.5. 配置 control plane 网络
预置备 overcloud 节点使用标准 HTTP 请求从 director 获取元数据。这表示所有 overcloud 节点都需要 L3 权限来访问以下之一:
-
director 的 Control Plane 网络,这是在
undercloud.conf
文件中使用network_cidr
参数定义的子网。overcloud 节点需要对该子网的直接访问权限或对该子网的可路由访问权限。 -
director 的公共 API 端点,使用
undercloud.conf
文件中的undercloud_public_host
参数指定。如果没有指向 Control Plane 的 L3 路由或希望使用 SSL/TLS 通信,则此选项可用。有关配置 overcloud 节点以使用公共 API 端点的更多信息,请参阅 第 11.4.6 节 “为预置备节点使用单独网络”。
director 使用 Control Plane 网络管理和配置标准 overcloud。对于具有预置备节点的 overcloud,可能需要对您的网络配置进行修改以适应 director 和预置备节点之间的通信。
使用网络隔离
您可以使用网络隔离分组服务以使用特定网络,包括 Control Plane。您可以为 Control Plane 上的节点定义特定 IP 地址。有关隔离网络和创建可预测的节点放置策略的更多信息,请参阅 网络隔离。
如果使用网络隔离,请确保您的 NIC 模板不包括用于 undercloud 访问的 NIC。这些模板可能会重新配置 NIC,这会导致在部署过程中出现连接和配置问题。
分配 IP 地址
如果不使用网络隔离,则可使用一个 Control Plane 网络管理所有服务。这需要手动配置每个节点的 Control Plane NIC,以便使用 Control Plane 网络范围内的 IP 地址。如果将 director 的 Provisioning 网络用作 Control Plane,请确保所选的 overcloud IP 地址不在置备(dhcp_start
和 dhcp_end
)和内省 (inspection_iprange
) DHCP 范围之内。
在创建标准 overcloud 期间,director 将创建 OpenStack Networking (neutron) 端口并为 Provisioning/Control Plane 网络上的 overcloud 节点自动分配 IP 地址。但是,这可能导致 director 分配的地址与您为每个节点手动配置的 IP 地址不同。在这种情况下,使用可预测的 IP 地址策略来强制 director 使用 Control Plane 上的预置备 IP 分配。
如果您使用网络隔离,请创建一个自定义环境文件 deployed-ports.yaml
来实现可预测的 IP 策略。以下示例自定义环境文件 deployed-ports.yaml
,将一组资源 registry 映射和参数传递给 director,并且定义预置备节点的 IP 分配。NodePortMap
、ControlPlaneVipData
和 VipPortMap
参数定义与每个 overcloud 节点对应的 IP 地址和子网 CIDR。
resource_registry: # Deployed Virtual IP port resources OS::TripleO::Network::Ports::ExternalVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/deployed_vip_external.yaml OS::TripleO::Network::Ports::InternalApiVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/deployed_vip_internal_api.yaml OS::TripleO::Network::Ports::StorageVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/deployed_vip_storage.yaml OS::TripleO::Network::Ports::StorageMgmtVipPort: /usr/share/openstack-tripleo-heat-templates/network/ports/deployed_vip_storage_mgmt.yaml # Deployed ControlPlane port resource OS::TripleO::DeployedServer::ControlPlanePort: /usr/share/openstack-tripleo-heat-templates/deployed-server/deployed-neutron-port.yaml # Controller role port resources OS::TripleO::Controller::Ports::ExternalPort: /usr/share/openstack-tripleo-heat-templates/network/ports/deployed_external.yaml OS::TripleO::Controller::Ports::InternalApiPort: /usr/share/openstack-tripleo-heat-templates/network/ports/deployed_internal_api.yaml OS::TripleO::Controller::Ports::StorageMgmtPort: /usr/share/openstack-tripleo-heat-templates/network/ports/deployed_storage_mgmt.yaml OS::TripleO::Controller::Ports::StoragePort: /usr/share/openstack-tripleo-heat-templates/network/ports/deployed_storage.yaml OS::TripleO::Controller::Ports::TenantPort: /usr/share/openstack-tripleo-heat-templates/network/ports/deployed_tenant.yaml # Compute role port resources OS::TripleO::Compute::Ports::InternalApiPort: /usr/share/openstack-tripleo-heat-templates/network/ports/deployed_internal_api.yaml OS::TripleO::Compute::Ports::StoragePort: /usr/share/openstack-tripleo-heat-templates/network/ports/deployed_storage.yaml OS::TripleO::Compute::Ports::TenantPort: /usr/share/openstack-tripleo-heat-templates/network/ports/deployed_tenant.yaml # CephStorage role port resources OS::TripleO::CephStorage::Ports::StorageMgmtPort: /usr/share/openstack-tripleo-heat-templates/network/ports/deployed_storage_mgmt.yaml OS::TripleO::CephStorage::Ports::StoragePort: /usr/share/openstack-tripleo-heat-templates/network/ports/deployed_storage.yaml parameter_defaults: NodePortMap: 1 # Controller node parameters controller-00-rack01: 2 ctlplane: 3 ip_address: 192.168.24.201 ip_address_uri: 192.168.24.201 ip_subnet: 192.168.24.0/24 external: ip_address: 10.0.0.201 ip_address_uri: 10.0.0.201 ip_subnet: 10.0.0.10/24 internal_api: ip_address: 172.16.2.201 ip_address_uri: 172.16.2.201 ip_subnet: 172.16.2.10/24 management: ip_address: 192.168.1.201 ip_address_uri: 192.168.1.201 ip_subnet: 192.168.1.10/24 storage: ip_address: 172.16.1.201 ip_address_uri: 172.16.1.201 ip_subnet: 172.16.1.10/24 storage_mgmt: ip_address: 172.16.3.201 ip_address_uri: 172.16.3.201 ip_subnet: 172.16.3.10/24 tenant: ip_address: 172.16.0.201 ip_address_uri: 172.16.0.201 ip_subnet: 172.16.0.10/24 ... # Compute node parameters compute-00-rack01: ctlplane: ip_address: 192.168.24.11 ip_address_uri: 192.168.24.11 ip_subnet: 192.168.24.0/24 internal_api: ip_address: 172.16.2.11 ip_address_uri: 172.16.2.11 ip_subnet: 172.16.2.10/24 storage: ip_address: 172.16.1.11 ip_address_uri: 172.16.1.11 ip_subnet: 172.16.1.10/24 tenant: ip_address: 172.16.0.11 ip_address_uri: 172.16.0.11 ip_subnet: 172.16.0.10/24 ... # Ceph node parameters ceph-00-rack01: ctlplane: ip_address: 192.168.24.101 ip_address_uri: 192.168.24.101 ip_subnet: 192.168.24.0/24 storage: ip_address: 172.16.1.101 ip_address_uri: 172.16.1.101 ip_subnet: 172.16.1.10/24 storage_mgmt: ip_address: 172.16.3.101 ip_address_uri: 172.16.3.101 ip_subnet: 172.16.3.10/24 ... # Virtual IP address parameters ControlPlaneVipData: fixed_ips: - ip_address: 192.168.24.5 name: control_virtual_ip network: tags: [192.168.24.0/24] subnets: - ip_version: 4 VipPortMap external: ip_address: 10.0.0.100 ip_address_uri: 10.0.0.100 ip_subnet: 10.0.0.100/24 internal_api: ip_address: 172.16.2.100 ip_address_uri: 172.16.2.100 ip_subnet: 172.16.2.100/24 storage: ip_address: 172.16.1.100 ip_address_uri: 172.16.1.100 ip_subnet: 172.16.1.100/24 storage_mgmt: ip_address: 172.16.3.100 ip_address_uri: 172.16.3.100 ip_subnet: 172.16.3.100/24 RedisVirtualFixedIPs: - ip_address: 192.168.24.6 use_neutron: false
- 1
NodePortMap
映射定义节点分配的名称。- 2
- 节点的短主机名,格式为 <
node_hostname>
。 - 3
- 节点的网络定义和 IP 分配。网络包括
ctlplane
、external
、internal_api
、management
、storage
、storage_mgmt
和租户
。IP 分配包括ip_address
、ip_address_uri
和ip_subnet
:-
IPv4:
ip_address
和ip_address_uri
应设置为相同的值。 IPv6:
-
ip_address
:设置为没有括号的 IPv6 地址。 -
ip_address_uri
:设置为方括号中的 IPv6 地址,例如[2001:0db8:85a3:0000:0000:8a2e:0370:7334]
。
-
-
IPv4:
11.4.6. 为预置备节点使用单独网络
默认情况下,director 使用 Provisioning 网络作为 overcloud Control Plane。但是,如果此网络被隔离且不可路由,则节点在配置期间不能与 director 的内部 API 通信。在这种情况下,您可能需要为节点指定一个单独的网络,并进行配置,以便通过公共 API 与 director 通信。
对于此情境,有几个需要满足的要求:
- overcloud 节点必须容纳来自 第 11.4.5 节 “配置 control plane 网络” 的基本网络配置。
- 您必须在 director 上启用 SSL/TLS,以便使用公共 API 端点。如需更多信息,请参阅在 overcloud 公共端点中启用 SSL/TLS。
-
您必须为 director 指定一个可访问的完全限定域名(FQDN)。此 FQDN 必须解析为 director 的可路由 IP 地址。使用
undercloud.conf
文件中的undercloud_public_host
参数来设置这个 FQDN。
本节中的示例使用了与主要情境不同的 IP 地址分配:
节点名 | IP 地址或 FQDN |
---|---|
Director(内部 API) | 192.168.24.1 (Provisioning 网络和 Control Plane) |
Director(公共 API) | 10.1.1.1 / director.example.com |
overcloud 虚拟 IP | 192.168.100.1 |
控制器 0 | 192.168.100.2 |
计算 0 | 192.168.100.3 |
以下章节为需要单独的 overcloud 节点网络的情境提供额外配置。
IP 地址分配
IP 分配方法类似于 第 11.4.5 节 “配置 control plane 网络”。但是,由于 Control Plane 可能无法从部署的服务器路由,因此您可以使用 NodePortMap
、ControlPlaneVipData
和 VipPortMap
参数从您选择的 overcloud 节点子网中分配 IP 地址,包括访问 Control Plane 的虚拟 IP 地址。以下示例是来自 第 11.4.5 节 “配置 control plane 网络” 的 deployed-ports.yaml
自定义环境文件的修改版本,它适用于此网络架构:
parameter_defaults:
NodePortMap:
controller-00-rack01
ctlplane
ip_address: 192.168.100.2
ip_address_uri: 192.168.100.2
ip_subnet: 192.168.100.0/24
...
compute-00-rack01:
ctlplane
ip_address: 192.168.100.3
ip_address_uri: 192.168.100.3
ip_subnet: 192.168.100.0/24
...
ControlPlaneVipData:
fixed_ips:
- ip_address: 192.168.100.1
name: control_virtual_ip
network:
tags: [192.168.100.0/24]
subnets:
- ip_version: 4
VipPortMap:
external:
ip_address: 10.0.0.100
ip_address_uri: 10.0.0.100
ip_subnet: 10.0.0.100/24
....
RedisVirtualFixedIPs:1
- ip_address: 192.168.100.10
use_neutron: false
- 1
RedisVipPort
资源被映射至network/ports/noop.yaml
。由于默认 Redis VIP 地址来自 Control Plane,因此该映射是必要的。在这种情况下,使用noop
来禁用这种 Control Plane 映射。
11.4.7. 映射预置备的节点主机名
配置预置备节点时,必须将基于 heat 的主机名映射到实际主机名,以便 ansible-playbook
能够到达可解析主机。请使用 HostnameMap
来映射这些值。
步骤
创建环境文件,例如
hostname-map.yaml
,并包括HostnameMap
参数和主机名映射。请遵循以下语法:parameter_defaults: HostnameMap: [HEAT HOSTNAME]: [ACTUAL HOSTNAME] [HEAT HOSTNAME]: [ACTUAL HOSTNAME]
[HEAT HOSTNAME]
通常符合以下惯例:[STACK NAME]-[ROLE]-[INDEX]
:parameter_defaults: HostnameMap: overcloud-controller-0: controller-00-rack01 overcloud-controller-1: controller-01-rack02 overcloud-controller-2: controller-02-rack03 overcloud-novacompute-0: compute-00-rack01 overcloud-novacompute-1: compute-01-rack01 overcloud-novacompute-2: compute-02-rack01
-
保存
hostname-map.yaml
文件。
11.4.8. 为预置备节点配置 Ceph Storage
在 undercloud 主机上完成以下步骤,为已部署的节点配置 Ceph。
流程
在 undercloud 主机上,创建环境变量
OVERCLOUD_HOSTS
,并将该变量设置为您要用作 Ceph 客户端的 overcloud 主机的 IP 地址列表(以空格分隔):export OVERCLOUD_HOSTS="192.168.1.8 192.168.1.42"
默认的 overcloud 计划名称是
overcloud
。如果使用其他名称,请创建一个环境变量OVERCLOUD_PLAN
来存储您的自定义名称:export OVERCLOUD_PLAN="<custom-stack-name>"
-
将
<custom-stack-name>
替换为堆栈的名称。
-
将
运行
enable-ssh-admin.sh
脚本,以在 Ansible 可用于配置 Ceph 客户端的 overcloud 节点上配置用户:bash /usr/share/openstack-tripleo-heat-templates/deployed-server/scripts/enable-ssh-admin.sh
运行 openstack overcloud deploy
命令时,Ansible 配置您在 OVERCLOUD_HOSTS
变量中定义为 Ceph 客户端的主机。
11.4.9. 利用预置备节点创建 overcloud
overcloud 部署使用标准 CLI 方法。对于预置备的节点,该部署命令需要使用来自核心 heat 模板集的一些额外选项和环境文件:
-
--disable-validations
- 使用此选项禁止对未用于预置备基础架构的服务执行基本的 CLI 验证功能。如果不禁止这些验证,部署将失败。 -
environments/deployed-server-environment.yaml
- 包含此环境文件以创建和配置预置备基础架构。这种环境文件用OS::Heat::DeployedServer
资源代替OS::Nova::Server
资源。
以下命令是示例 overcloud 部署命令,且环境文件特定于预置备的架构:
$ source ~/stackrc (undercloud)$ openstack overcloud deploy \ --disable-validations \ -e /usr/share/openstack-tripleo-heat-templates/environments/deployed-server-environment.yaml \ -e /home/stack/templates/deployed-ports.yaml \ -e /home/stack/templates/hostname-map.yaml \ --overcloud-ssh-user stack \ --overcloud-ssh-key ~/.ssh/id_rsa \ <OTHER OPTIONS>
--overcloud-ssh-user
和 --overcloud-ssh-key
选项用于在配置阶段通过 SSH 连接每个 overcloud 节点,创建初始 tripleo-admin
用户,以及将 SSH 密钥注入 /home/tripleo-admin/.ssh/authorized_keys
。要注入 SSH 密钥,请为初始 SSH 连接指定包含 --overcloud-ssh-user
和 --overcloud-ssh-key
(默认为 ~/.ssh/id_rsa
)的凭证。为了限制暴露使用 --overcloud-ssh-key
选项指定的私钥,director 不会将该密钥传递给任何 API 服务,如 heat,而只有 director openstack overcloud deploy
命令使用此密钥为 tripleo-admin
用户启用访问权限。
11.4.10. 访问 overcloud
director 生成凭据文件,其中包含从 undercloud 操作 overcloud 所需的凭据。director 将此文件保存为 stack
用户主目录的 overcloudrc
文件。
流程
获取
overcloudrc
文件:(undercloud)$ source ~/overcloudrc
命令提示符更改以表示您正在访问 overcloud:
(overcloud)$
要返回与 undercloud 交互,请提供
stackrc
文件:(overcloud)$ source ~/stackrc (undercloud)$
命令提示符更改以表示您正在访问 undercloud:
(undercloud)$
11.4.11. 扩展预置备节点
扩展预置备节点的流程与 第 19 章 扩展 overcloud 节点 中的标准扩展流程类似。但是,添加新预置备节点的流程却不相同,这是因为预置备节点不从 OpenStack Bare Metal (ironic) 和 OpenStack Compute (nova) 使用标准注册和管理流程。
扩展预置备节点
使用预置备节点扩展 overcloud 时,必须在每个节点上配置编配代理以对应 director 的节点计数。
执行以下操作以扩展 overcloud 节点:
- 根据 第 11.4.1 节 “预置备节点要求” 准备新预置备节点。
- 扩展节点。更多信息请参阅 第 19 章 扩展 overcloud 节点。
- 在执行部署命令后,等待 director 创建新的节点资源并启动配置。
缩减预置备节点
使用预置备节点缩减 overcloud 时,请按照 第 19 章 扩展 overcloud 节点 中的缩减说明操作。
在缩减操作中,您可以为 OSP 置备或预置备节点使用主机名。您也可以将 UUID 用于 OSP 置备的节点。但是,预先提供的节点没有 UUID,因此您始终使用主机名。将 hostname 或 UUID 值传递给 openstack overcloud node delete
命令。
流程
找出您要删除的节点的名称。
$ openstack stack resource list overcloud -n5 --filter type=OS::TripleO::ComputeDeployedServerServer
将
stack_name
列中对应的节点名称传递给openstack overcloud node delete
命令:$ openstack overcloud node delete --stack <overcloud> <stack>
-
将
<overcloud>
替换为 overcloud 堆栈的名称或 UUID。 -
将 <
;stack_name
> 替换为您要删除的节点的名称。您可以在openstack overcloud node delete
命令中包含多个节点名称。
-
将
确保
openstack overcloud node delete
命令已运行完:$ openstack stack list
当删除操作完成后,
overcloud
堆栈的状态会显示UPDATE_COMPLETE
。
从堆栈中移除 overcloud 节点之后,关闭这些节点。在标准部署中,director 上的裸机服务控制此功能。但是,如果使用预置备节点,您必须手动关闭这些节点,或使用每个物理系统的电源管理控制。从堆栈中移除节点之后,如果您不关闭它们,它们可能保持运行,并作为 overcloud 环境的组成部分重新连接。
关闭移除的节点后,将其重新置备为基础操作系统配置,以免它们未来意外加入 overcloud。
在将之前已经从 overcloud 移除的节点重新部署到新的基础操作系统之前,不要尝试再次使用它们。缩减流程只从 overcloud 堆栈移除节点,不会卸载任何软件包。
移除预置备 overcloud
要删除使用预置备节点的整个 overcloud,请参阅 第 15.7 节 “删除 overcloud 堆栈” 获取标准 overcloud 移除过程。移除 overcloud 后,关闭所有节点并将其重新置备为基础操作系统配置。
在将之前已经从 overcloud 移除的节点重新部署到新的基础操作系统之前,不要尝试再次使用它们。移除流程只删除 overcloud 堆栈,不会卸载任何软件包。