实例预留的额外规格¶
https://blueprints.launchpad.net/blazar/+spec/flavors-extra-specs
支持在实例预留中添加额外规格。
注意
在这个规格中,有两个不同的术语,额外规格 和 资源属性。这两个术语指的是同一件事,即定义为 ComputeHostExtraCapability。为了保留 BP 中使用的原始术语,本文档的标题和问题描述使用 额外规格。
问题描述¶
用户可以请求 vcpu、内存、磁盘、数量和亲和性作为实例预留的参数。Blazar 会根据用户的请求检查请求的实例是否可以预留。
预留实例的需求不仅包括其风味的尺寸和数量,还包括特定的硬件规格或功能。例如,有些用户希望预留 GPU 实例。但是,实例预留插件不支持将额外规格作为参数。
用例¶
对于 NFV 领域,某些类型的实例需要在特定的 hypervisor 上运行,例如 DPDK、SR-IOV 等。如果实例预留不支持额外规格,即使用户希望实例在 DPDK hypervisor 上调度,预留的实例也可能被调度到非 DPDK hypervisor 上。
对于 HPC 领域,GPGPU 在该领域很常见。因此,当用户预留实例时,他们可能希望请求 GPU 实例。
提议的变更¶
实例预留插件支持请求体中的 resource_properties 键。有关请求体更改,请参阅 REST API 影响部分。此规格仅关注支持 resource_properties 与 ComputeHostExtraCapability 的匹配。
当用户使用 resource_properties 预留实例时,Blazar 会选择能够容纳请求的风味和 resource_properties 的 hypervisor。
当管理员更新 ComputeHostExtraCapability 时,Blazar 会重新分配与更新的 ExtraCapability 相关的预留。重新分配策略与 update_reservation API 和资源监控功能使用的策略相同。
备选方案¶
用户可以直接在请求体中指定具有特定功能的 hypervisor 列表。用户在创建实例预留之前会检查哪些 hypervisor 具有这些功能,然后决定他们想要使用哪些 hypervisor。
与提议的更改相比,这种方法可能更容易实现,因为 Blazar 需要做的只是从列表中选择 hypervisor。但是,管理员可以随时更改 ComputeHostExtraCapability。当用户想要使用的特定功能发生更改时,用户必须再次发送新的 hypervisor 列表。此外,云可以配置为禁止用户查找主机及其额外功能。
数据模型影响¶
resource_properties 列已添加到 InstanceReservations 表中。此列存储用户发送的 resource_properties 的原始字符串。
InstanceReservations 表的更改如下
ALTER TABLE instance_reservations ADD resource_properties MEDIUMTEXT AFTER affinity;
从 Pike 升级到更高版本时,该列分配 NULL。
REST API 影响¶
URL: POST /v1/leases
在 virtual:instance 资源类型中引入 resource_properties 键
请求示例
{ "name": "instance-reservation-1", "reservations": [ { "resource_type": "virtual:instance", "vcpus": 4, "memory_mb": 4096, "disk_gb": 10, "amount": 5, "affinity": False, "resource_properties": { "property_key1": "value1", "property_key2": "value2" } } ], "start": "2020-05-17 09:00" "end": "2020-05-17 10:00", "events": [] }
响应示例
{ "leases": { "reservations": [ { "id": "reservation-id", "status": "pending", "lease_id": "lease-id-1", "resource_id": "resource_id", "resource_type": "virtual:instance", "vcpus": 4, "memory_mb": 4096, "disk_gb": 10, "amount": 5, "affinity": False, "resource_properties": { "property_key1": "value1", "property_key2": "value2" } "created_at": "2017-05-01 10:00:00", "updated_at": "2017-05-01 11:00:00", }], ..snippet.. } }
URL: GET /v1/leases
URL: GET /v1/leases/{lease-id}
URL: PUT /v1/leases/{lease-id}
URL: DELETE /v1/leases/{lease-id}
更改与 POST /v1/leases 相同
安全影响¶
无
通知影响¶
无
其他最终用户影响¶
python-blazarclient 需要在租约处理命令中支持 resource_properties 参数。
性能影响¶
无
其他部署者影响¶
无
开发者影响¶
无
实现¶
负责人¶
- 主要负责人
muroi-masahito
- 其他贡献者
无
工作项¶
将 resource_properties 列添加到 InstanceReservation 表
支持实例预留插件中的 resource_properties 键
为 ComputeHostExtraCapability 管理添加重新分配逻辑
在 python-blazarclient 中支持 resource_properties 参数
依赖项¶
无
测试¶
实例预留的场景测试应支持 resource_properties
文档影响¶
API 参考
参考资料¶
OPNFV Promise : http://artifacts.opnfv.org/promise/docs/development_manuals/index.html
resource-monitoring BP: https://blueprints.launchpad.net/blazar/+spec/resource-monitoring
历史记录¶
发布名称 |
描述 |
|---|---|
Queens |
引入 |