在服务器详情中显示调度器提示¶
https://blueprints.launchpad.net/nova/+spec/show-scheduler-hints-in-server-details
目前 Nova 缺乏一种直接的方式来暴露与服务器关联的 scheduler hints(调度器提示)。本提案建议扩展 Nova 现有的 API,以便用户在可用时检索此信息。
问题描述¶
调度器提示可以在服务器创建时指定,并且可以根据用户提供的配置影响放置决策。这些提示存储在 Nova 的数据库中,并在服务器迁移期间可以被调度器稍后考虑。如果没有事先获得此信息,API 用户可能会选择无效的目标主机进行迁移请求,并且难以理解故障的真正原因。
用例¶
作为运维人员,我希望检索有关服务器创建请求的更多详细信息,其中包括关联的
scheduler_hints。作为云管理员,我希望检查与所有正在运行的服务器相关联的更多信息,包括它们的调度器提示,以便从主机制定迁移计划。
像 Watcher [1] 这样的优化服务将受益于额外的放置约束,例如来自主机所有实例的调度器提示,以便构建更具体的行动计划来优化集群中的工作负载平衡。如果没有此信息,Watcher 可能会提出包含许多违反某些约束的服务器迁移操作的解决方案。例如:Watcher 不会考虑主机是为使用
different_host调度器提示创建的服务器的无效目标。
提议的变更¶
代码变更¶
扩展 GET /servers/{server_id} 和 GET /servers/detail 的 API 响应,以包含有关调度器提示的信息。
在 API 响应中添加一个新条目,其键为 scheduler_hints,其中包含与相应服务器关联的所有持久化的调度器提示。值格式将遵循服务器创建请求中定义的相同 json 模式 [2]。如果服务器没有关于调度器提示的信息,则该值将设置为 {}。
openstack 客户端和 openstack sdk 将更新以支持新的 API 并显示添加的新字段。
备选方案¶
用户驱动的实例元数据¶
用户还可以将调度器提示信息存储在实例元数据中。这将允许他们在需要时稍后查询此信息。缺点是它在 nova 数据库中复制了此信息,并且还需要用户手动执行额外的步骤。
数据模型影响¶
无。
REST API 影响¶
以下更改将在新的 API 微版本中引入
GET
/servers/{server_id}显示服务器详情
返回代码:400、401、403(无更改)
建议的 JSON 响应添加
{ "server": { ... "scheduler_hints": { "group": "af16eb84-88fe-4cc4-b558-1752cbe8cb15", "same_host": "6605bff6-86b9-4824-b35b-a6b3c4c0e717" }, ... } }
GET
/servers/detail列出服务器详情
返回代码:400、401、403(无更改)
建议的 JSON 响应添加
{ "servers": [ { ... "scheduler_hints":{ "group":"dc0ca1ef-7e0b-4cb5-89aa-b2069f8b8a8a", "different_host":"6dffb036-d020-4630-b467-334400a050ca" }, ... } ] }
新字段的默认策略将是 project_reader_or_admin,以匹配现有的 /servers/detail 策略。
安全影响¶
无。
通知影响¶
无。
其他最终用户影响¶
将在 openstack 客户端和 openstack sdk 中的 Show Server Details 和 List Servers Detailed 命令的输出中添加一个包含调度器提示信息的新字段。
性能影响¶
无。
其他部署者影响¶
无。
开发人员影响¶
无。
升级影响¶
无
实现¶
负责人¶
- 主要负责人
dviroel
功能联络人¶
无。
工作项¶
在一个新的微版本中,将服务器详情响应中添加一个新字段,并用持久化的调度器提示填充它。
扩展现有的单元和功能测试,包括 API 示例测试。
扩展现有的 scheduler_hints 和 show server details tempest 测试,以验证新的微版本是否包含
scheduler_hints信息。更新 API 文档,包括 API 参考中的 API 示例。
更新 openstack 客户端和 openstack sdk 以支持新的微版本并显示新字段。
依赖项¶
无。
测试¶
可以扩展现有的单元、功能、API 示例和 tempest 测试,以验证新的微版本是否包含 scheduler_hints 信息。如果需要,可以添加新的测试以正确覆盖其他场景。
文档影响¶
API 参考
REST API 版本历史
openstack 客户端和 openstack sdk 文档
参考资料¶
历史¶
发布名称 |
描述 |
|---|---|
2025.1 Epoxy |
引入 |