Node adoption¶
概述¶
作为硬件资产生命周期管理的一部分,能够添加应被视为“正在使用”的硬件的能力,这并非不合理的需求,这些硬件可能由另一个 Bare Metal 服务安装部署,或者通过其他方式部署。
因此,节点采用功能允许用户将节点定义为 active 状态,同时跳过 available 和 deploying 状态,这将防止 Compute 服务将节点视为已准备好使用。
此功能用作状态机工作流程的一部分,其中处于 manageable 状态的节点可以通过 provision_state 动词 adopt 移动到 active 状态。要查看状态转换能力,请参阅 Bare Metal State Machine。
注意
对于使用 Ironic 与 Nova 结合的部署,Ironic 的节点采用功能不适用。如果您需要将生产节点采用到 Ironic 和 Nova 中,您可以在 Adoption with Nova 中找到一个高级配方。
工作原理¶
最初注册的节点从 enroll 状态开始。操作员必须将节点移动到 manageable 状态,这将验证节点的 power 接口。一旦处于 manageable 状态,操作员可以明确选择采用节点。
采用节点将验证其 boot 接口,并且成功后,该过程将利用所谓的“接管”逻辑。接管过程旨在让 conductor 接管失败的 conductor 的节点管理。
接管过程涉及调用部署接口的 prepare 和 take_over 方法。这些步骤会采取具体的操作,例如下载和暂存部署内核和 ramdisk、ISO 镜像、任何必需的启动镜像或启动 ISO 镜像,然后放置任何 PXE 或虚拟媒体配置,如果需要,则为节点提供这些配置。
采用过程不会对物理节点进行任何更改,除非操作员提供的配置使用虚拟媒体在正常情况下启动节点。操作员应确保任何定义的节点配置足以保证节点在未来继续运行。
潜在风险¶
此功能的主要风险是提供的配置最终可能不正确或无效,这可能导致潜在的运营问题
rebuild动词 - 重建旨在允许用户将节点重新部署到全新状态。采用的风险在于,操作员采用节点时定义的镜像可能不是预先存在配置的有效镜像。如果此功能用于从一个部署迁移到另一个部署,并且加载了原始的原始镜像并提供了这些镜像,那么最终的风险与正常使用
rebuild功能的风险相同,服务器将被有效地擦除。删除节点时,如果配置中提供的部署镜像不正确,删除或清理过程可能会失败,因为节点可能未使用提供的镜像和驱动程序部署,或者可能存在兼容性问题。
操作员需要意识到这种可能性,并相应地进行计划,以确保部署镜像已知与环境中的硬件兼容。
网络 - 采用不会对新采用的节点施加任何新的网络配置,因为这将视为修改节点。
操作员需要相应地进行计划,并配置网络,以便节点能够通过网络启动。
如何使用¶
注意
ironic-conductor 在第一次成功的电源状态检查中观察到的电源状态,作为过渡到 manageable 状态的一部分,将对已采用的节点强制执行。这意味着处于 power off 状态的节点,默认情况下,将强制执行 power off 状态,除非管理员使用 Bare Metal 服务主动更改电源状态。
需求¶
使用要求与部署节点基本相同
足够的驱动程序信息,以允许成功进行电源管理验证。
足够的 instance_info 以通过部署接口准备。
每个驱动程序可能根据提供的配置具有其他要求。一个例子是定义节点始终从网络启动,这将导致 conductor 尝试检索相关文件。如果无法做到,采用将失败,节点将被放置在 adopt failed 状态。
示例¶
这是一个创建名为 testnode 的新节点,并提供足够的信息以通过基本验证,以便从 manageable 状态移动到 active 状态的示例
# Explicitly set the client API version environment variable to
# 1.17, which introduces the adoption capability.
export OS_BAREMETAL_API_VERSION=1.17
baremetal node create --name testnode \
--driver ipmi \
--driver-info ipmi_address=<ip_address> \
--driver-info ipmi_username=<username> \
--driver-info ipmi_password=<password> \
--driver-info deploy_kernel=<deploy_kernel_id_or_url> \
--driver-info deploy_ramdisk=<deploy_ramdisk_id_or_url>
baremetal port create <node_mac_address> --node <node_uuid>
baremetal node set testnode \
--instance-info image_source="https://:8080/blankimage"
baremetal node manage testnode --wait
baremetal node adopt testnode --wait
注意
在上面的示例中,image_source 设置必须引用有效的镜像或文件,但是,该镜像或文件最终可以是空的。
注意
上面的示例利用了一个定义启动操作为本地的 capability。除非需要网络启动,否则建议将节点定义为本地启动。
注意
上面的示例将因定义了假镜像且未定义 instance_info/image_checksum 值而失败。因此,任何实际尝试写入镜像的操作都将失败,因为 image_checksum 值仅在实际部署操作时进行验证。
注意
用户可能希望将 instance_uuid 分配给节点,这可用于匹配 Compute 服务中的实例。这对于 Bare Metal 服务的正常运行不是必需的。
baremetal node set <node name or uuid> –instance-uuid <uuid>
注意
在 Newton 中,结合 API 版本 1.20,引入了 network_interface 的概念。此功能的的用户可能希望添加具有 noop network_interface 的新节点,然后在稍后更改接口。
故障排除¶
如果节点的采用操作失败,导致失败的错误将在查看节点时记录在节点的 last_error 字段中。在节点采用的情况下,此错误将主要归因于验证步骤的失败。验证步骤取决于为节点选择的驱动程序。
任何处于 adopt failed 状态的节点都可以重新尝试 adopt 动词。示例
baremetal node adopt <node name or uuid>
如果用户希望取消采用尝试,他们可以将节点从 adopt failed 状态移回 manageable 状态,方法是发出 manage 动词。示例
baremetal node manage <node name or uuid>
如果一切都失败,硬件节点可以从 Bare Metal 服务中删除。在节点处于 adopt failed 状态时,可以使用 node delete 命令,这与将 provision 状态设置为 deleted 不同。这将删除节点,而不会进行清理,以保留节点的当前状态。示例
baremetal node delete <node name or uuid>
Adoption with Nova¶
由于在节点采用到 Ironic 时,Nova 中没有创建 bare metal 实例的机制,因此上述节点采用功能不能用于将生产节点添加到使用 Ironic 与 Nova 结合的部署中。
将生产节点添加到 Ironic/Nova 部署的一种选择是使用假驱动程序。总体思路是,对于 Nova,节点通常实例化,以确保实例在计算项目中正确创建,而 Ironic 不会触碰它们。
以下是一些用作指南的高级步骤
创建 bare metal flavor 和实例的 hosting project
将节点注册到 Ironic,创建端口,并将其移动到 manageable
将硬件类型和接口更改为假驱动程序
提供节点以使其可用
逐个将节点添加到 placement aggregate 并创建实例
将硬件类型和接口改回真实的
确保在提供节点之前将驱动程序更改为假驱动程序,否则清理将擦除您的生产服务器!
使所有节点可用的原因是,这比逐个提供节点并依赖资源跟踪器查找它们要快得多。逐个启用它们是必需的,以确保实例名称与服务器的(采用前)名称匹配。
上述配方不涵盖 Neutron,根据您的部署,可能还需要处理 Neutron。