严格隔离用于镜像的主机组

https://blueprints.launchpad.net/nova/+spec/restrict-image-isolation-with-defined-keys

此蓝图的目的是改进过滤器 AggregateImagePropertiesIsolation

操作员希望将特定镜像的实例调度到预定义的的主机组上。此外,他希望严格隔离该镜像的主机组,并且只接受没有 key 的镜像调度到其他主机。

问题描述

目前使用过滤器 AggregateImagePropertiesIsolation,我们可以定义将在以下矩阵中调度到特定聚合上的镜像

img \ aggr

key=foo

key=xxx

<empty>

key=foo

True

False

True

key=bar

False

False

True

<empty>

True

True

True

表 1:行是镜像属性,列是聚合元数据。

问题是
  • 没有 key 的镜像仍然可以调度到带有标签的聚合中

  • 聚合外部的主机或未标记的聚合中的主机仍然可以接受带有标签的镜像

提议的变更

我们希望添加一个选项来
  • 使带有标签的聚合拒绝未标记的镜像

  • 使未标记的聚合只接受未标记的镜像

img \ aggr

key=foo

key=xxx

<empty>

key=foo

True

False

False

key=bar

False

False

False

<empty>

False

False

True

表 2:行是镜像属性,列是聚合元数据

我们建议在过滤器中添加全局选项 aggregate_image_filter_strict_isolation,该选项决定隔离的严格程度

  • aggregate_image_filter_strict_isolation = False:过滤器功能与之前相同(表 1)

  • aggregate_image_filter_strict_isolation = True:过滤器功能如提议的决策(表 2)

为了向后兼容,此选项默认设置为 False。

我们还建议添加此选项以在每个聚合中进行配置。

备选方案

  • 另一种解决方案是创建一个继承自 AggregateImagePropertiesIsolation 的新过滤器。

  • 更可配置的解决方案可能是使用两个配置选项 allow_untagged_images_in_tagged_aggregate=Trueallow_tagged_images_in_untagged_aggregate=True,但目前我们找不到任何使用此替代方案的案例。

数据模型影响

REST API 影响

安全影响

通知影响

其他最终用户影响

性能影响

其他部署者影响

  • 操作员需要更新调度器的 nova.conf 以设置选项 aggregate_image_filter_strict_isolation

::

aggregate_image_filter_strict_isolation=True

  • 要配置每个聚合,操作员需要设置元数据。

::

nova aggregate-set-metadata aggrA aggregate_image_filter_strict_isolation=True

注意:对于现有系统,实例将不会被重新调度。操作员始终可以选择进行迁移。

开发人员影响

实现

负责人

主要负责人

sahid-ferdjaoui

工作项

  • 更新 AggregateImagePropertiesIsolation 以接受新的全局选项。

  • 更新 AggregateImagePropertiesIsolation 以接受每个聚合的配置。

依赖项

测试

  • 单元测试可以验证预期的行为。

文档影响

我们需要更新文档

‘doc/source/devref/filter_scheduler.rst’

参考资料