从 Ramdisk 启动

https://storyboard.openstack.org/#!/story/1753842

虽然 Ironic 本身由于其操作特性支持从 ramdisk 启动,但我们并不赋予或启用希望使用从 ramdisk 启动实例的操作者。

在期望的使用场景中,这些通常是短暂实例,没有实际的后端存储。话虽如此,我们当然不能忘记清理和其他机制,这些机制有助于为部署中的 Ironic 提供更高的价值。

大多数情况下,操作者具备足够的知识来构建可以显式从 RAM 启动的 ramdisk 和内核镜像。这种情况在高性能计算环境中很常见,在这些环境中,可能需要快速部署实例,或者实例在功能上是无盘的,以消除故障点。

问题描述

  • 操作者希望完全短暂的实例,这些实例本质上仅在 RAM 中运行。这允许将计算本地磁盘专门用于短暂存储,或者完全从机器中省略这些磁盘。

  • 大规模集群计算实践长期以来一直使用预先准备好的内核/ramdisk 镜像,以帮助促进其环境的启动和运行。

  • Ironic 具备_部分_所需的支持。我们对从卷启动做了一些类似的事情,如果我们最终支持 RBD 启动,在功能上我们将需要这个确切的功能。与从卷启动 iPXE 链式加载场景和基于虚拟介质从远程卷启动的区别在于,从卷启动场景最终依赖于后端块存储,而并非所有情况都需要或希望使用后端块存储。

提议的变更

我们建议构建一个基于我们现有的 ramdisk 代码和设施的 ramdisk 部署接口。这将使我们能够快速启动工作功能,并帮助我们更好地确定需要重构的地方。

ramdisk 部署驱动程序接口将是一个选择加入的接口,专注于支持 ramdisk 启动场景。

ramdisk 部署驱动程序还将循环到代理接口类中,以最大限度地减少复杂性,并允许清理工作流程和相关代码保留在一个位置。

从机制上讲,如果设置了 ramdisk 部署接口

  • 实例可以基于提供的任何实例 kernelramdisk 启动,作为要部署的请求的“glance”镜像的一部分。实际上,将忽略任何镜像内容。

  • boot_option 实例将被 ramdisk 接口忽略,并显式设置为 ramdisk。如果另有设置,接口将记录警告。

  • 用于基于“glance”镜像部署的相同的 kernelramdisk 参数可以重新用于包含 URL。

    • 未来,ironic 应该考虑扩展接受的 URL 格式,以包括 nfs://${server_ip}{$path}{$file},这将能够直接启动到托管在 NFS 的内核和 ramdisk。这不包括 nfsroot 场景。本文档不需要执行此操作,但从卷启动规范明确指出这可能是可以实现的一种场景。

    • 另一个考虑因素可能是支持直接指定链式加载的路径。

  • 用户必须显式允许 TFTP 和/或 HTTP iPXE 端点访问以启动裸机节点。通常,部署不允许租户网络访问这些端点。

  • 配置驱动程序将被 ironic 忽略,并且建议用户使用元数据服务。使用配置驱动程序的部署将显式记录警告。

    • 直接使用 ironic 部署节点的运营商可能需要通过 /instance_info/ramdisk_kernel_arguments 字段将额外的内核命令行参数传递给正在“部署”的节点,以允许这些运营商将信息传递给实例。

构建此功能将使我们能够快速调整支持以启用基于 Ceph RBD 的启动以及 ramdisk 启动到用作根设备的 NFS 共享。这是某些运营商表达过需求的功能。Ceph RBD 支持需要在底层的 pxe 启动接口中,因为 ramdisk 接口覆盖了 pxe 接口。从 volume target 信息进行 Ceph RBD 或基于 NFS 的启动的支持,将是未来的增强功能。

备选方案

我们可以考虑构建逻辑来处理和支持将其集成到标准部署工作流程中,但是考虑到这是一个充分且专门的用例,它可能完全是不必要的,因为它在大多数情况下将不会被使用。

数据模型影响

无。

状态机影响

没有。部署包括设置启动配置然后打开网络节点电源。

REST API 影响

客户端 (CLI) 影响

“ironic” CLI

“openstack baremetal” CLI

RPC API 影响

驱动程序 API 影响

Nova 驱动程序影响

Ramdisk 影响

安全影响

预计没有额外的安全影响,除了部署场景能够由操作员设置,在部署场景中,可能需要将部署的内核/ramdisk 潜在地保存较长时间。

Ironic 已经对 netboot 实例执行此操作。

其他最终用户影响

选择使用此功能的运营商可能希望实施专门的网络控制来促进机器的网络启动。

每个部署和案例都不同,在没有实施后信息的情况下,我们将无法确定是否可以推导出标准。

可扩展性影响

预计没有可扩展性影响。

性能影响

预计没有实质性的性能影响,尽管如果该功能变得流行……接管自然需要更长时间。

其他部署者影响

开发人员影响

实现

负责人

主要负责人

Julia Kreger (TheJulia)

其他贡献者

工作项

  • 创建部署接口

  • 为所述 ramdisk 部署接口创建 tempest 测试。

  • 创建用户文档。

依赖项

测试

如果驱动程序可用,这似乎是一个可以通过 tempest 场景轻松测试的功能。不需要额外的测试。

升级和向后兼容性

文档影响

需要更新文档以支持这项工作。

参考资料