跳转到: 导航, 搜索

Sahara/PluggableProvisioning/ClusterLifecycle

模板模式的集群生命周期

“cluster”对象作为参数传递给多个函数。它可以用于获取集群配置和更改它。在这些调用期间,对象的一些字段是空白的。
validate_cluster(...) 和 update_infra(...) 都接收具有相同字段集的 cluster。validate_cluster(...) 不得更改 cluster 对象,而 update_infra(...) 可以(并且对于某些字段必须)进行一些调整。以下是调用时将不会设置的字段列表。所有说明插件可以或必须调整某个字段的注释仅适用于 update_infra(...) 函数

  • image - 插件必须设置该字段。假设插件将此字段设置为父 cluster 对象中的 default_image,或从镜像注册表中获取的镜像。
  • instances。 此时集群实例尚未创建。

插件可以完全重写 node_groups 字段。 假设插件将利用此功能来添加管理节点的规格或其他类似内容。
configure_cluster(...) 和 start_cluster(...) 都接收具有所有字段设置的“cluster”对象。

配置文件模式的集群生命周期

上一节介绍了使用模板创建集群。 本节详细介绍了从特定于提供商的配置文件创建集群。
在此模式下,用户通过提供特定于提供商的配置文件来开始创建集群。 Savanna 将该文件与空的“cluster”对象一起传递给插件的 convert(...) 方法。 预计插件将从文件中解析集群配置,并使用集群拓扑填充“cluster”对象。
在 convert(...) 返回后,Savanna 会向用户显示集群对话框。 在对话框中,用户可以更改节点数量和节点组的 flavor。 有关清晰起见,请参阅 wiki 上的集群模拟图。 用户提交表单后,流程将经历与模板模式相同的循环,除了一个事情
cluster_configs 和 node_configs 都不会提供给插件。 插件是否使用这些字段由插件决定。 或者,插件可以将配置文件保存在额外的字段中,并在以后使用它。

集群生命周期流程图

以下是 Savanna 核心和插件在集群生命周期的每个阶段对集群对象的责任描述。 字段颜色说明

颜色 已设置 可修改 必须指定?
黑色 - -
灰色 - - -
下划线蓝色 -
蓝色 - -
红色 -

convert(cluster)

 cluster:
   name
   plugin_name
   default_image
   cluster_configs
   node_groups: 
     name
     flavor
     image
     node_processes
     node_configs
     anti_affinity_group
     count
     instances:
       id
       ip
       credentials
       extra
     extra
   extra

validate_cluster(cluster)

 cluster:
  name
  plugin_name
  default_image
  cluster_configs
   node_groups:
     name
     flavor
     image
     node_processes
     node_configs
     anti_affinity_group
     count
     instances:
       id
       ip
       credentials
       extra
     extra
   extra

update_infra(cluster)

 cluster:
  name
  plugin_name
  default_image
  cluster_configs
   node_groups:
     name
     flavor
     image
     node_processes
     node_configs
     anti_affinity_group
     count
     instances:
       id
       ip
       credentials
       extra
     extra
   extra

configure_cluster(cluster), start_cluster(cluster)

 cluster:
  name
  plugin_name
  default_image
  cluster_configs
   node_groups:
     name
     flavor
     image
     node_processes
     node_configs
     anti_affinity_group
     count
     instances:
       id
       ip
       credentials
       extra
     extra
   extra