使用主机标签自动分配来分配主机

在集群或 启用了 Satellite 的 IBM Cloud 服务中,系统会根据主机标签自动将主机分配到工作节点池中,以匹配可用的计算能力。 您可以启用或禁用自动分配功能。

Satellite 位置的控制平面不支持主机自动分配功能。

主机标签

在 Satellite 集群中,主机自动分配会将工作池标签与可用主机上的主机和区域标签进行匹配。

请记住以下有关用于自动分配的主机标签的信息。

缺省主机标签
将主机连接到 Satellite 位置时,主机会自动获取 cpu,os 和 memory 的标签 (以字节计)。 您无法除去这些标签。 您可以包含其他主机标签,也可以稍后更新主机元数据。 如果主机不包含 os 标签,那么将自动假定为 RHEL7。
主机可以具有比工作程序池更多的标签
例如,一个具有 cpu、memory 和 env 主机标签的主机,可以被自动分配到仅具有 cpu 主机标签的工作器池中。 主机自动分配与 cpu 标签匹配。 反之则不成立:如果某个工作池的标签数量多于某个主机的标签数量,则该主机无法被自动分配到该工作池中。
匹配是精确的
主机标签必须完全相等 (=)。 即使主机标签是数字,也会使用不小于 (<),大于 (>) 或其他运算符进行匹配。

主机自动分配的示例方案

假设您有一个 Satellite 集群,其 default 工作程序池位于 us-east-1a 和以下主机标签中。

  • cpu=4
  • env=prod
  • os=RHEL7

Satellite 位置具有可用的 (未分配的) 主机,其主机标签如下所示。

  • 主机 A: cpu=4, memory=32, env=prod, zone=us-east-1b os=rhel
  • 主机 B: cpu=4, memory=32, zone=us-east-1a os=RHEL7
  • 主机 C: cpu=4, memory=64, env=prod os=RHEL7
  • 主持人 D:cpu=4, memory=64, env=prod os=RHCOS ( Red Hat CoreOS )

如果调整 default 工作程序池大小以请求 3 更多工作程序节点,那么只能自动分配主机 C,而不能自动分配主机 A 或主机 B。

  • 主机 A 处理中央处理器(CPU)和 env=prod 的标签请求,但只能在 us-east-1b 中进行分配。 由于 default 工作程序池仅在 us-east-1a 中,因此未分配主机 A。
  • 主机 B 满足 CPU 和区域请求。 但是,主机没有 env=prod 标签,因此未分配此标签。
  • 将自动分配主机 C,因为它与 cpu=4 和 env=prod 主机标签匹配,并且没有任何区域限制。 不考虑 memory=64 主机标签,因为工作程序池不请求 memory 标签。
  • 主机 D 满足 CPU,区域和 env=prod 标签请求,但不满足 RHEL7 的 os 请求,因此未分配。

必须将主机分配为集群中缺省工作程序池的每个专区中的工作程序节点。 如果缺省工作程序池跨多个专区,请确保您具有可以在每个专区中分配的具有匹配标签的主机。

自动分配主机

IBM Cloud Satellite 会根据主机标签(例如 cpu )自动将主机分配给集群中请求计算能力的 worker 池。

开始之前,请确保创建 Satellite 集群。 如果在 CLI 中创建集群,那么必须指定 --workers 选项以及要自动分配的主机数。 然后,确保将主机 连接 到 Satellite 位置,但不将主机分配给任何资源。

  1. 查看工作程序池用于请求计算容量的主机标签。 您有多个选项。

    • 使用要用于自动分配的主机标签在 Satellite 集群 中创建工作程序池。
    • 查看现有工作程序池的主机标签。 请注意,您无法更新工作程序池具有的主机标签。 您可以通过运行 ibmcloud oc worker-pool get -c <cluster> --worker-pool <worker_pool> 命令来查看 主机标签。
    • 查看 Satellite启用的 IBM Cloud 服务集群用于从 Satellite-enabled IBM Cloud 服务实例控制台请求资源的主机标签。
  2. 查看可用主机的主机标签。 请记住,当您将主机连接到 Satellite 位置时,主机会自动获取 cpu 和 memory 标签。

    1. 获取 Satellite 位置名。
        ibmcloud sat location ls
        ```
    2. 列出位置中的可用 (未分配) 主机,并记下要检查其标签的主机的标识。
    ```sh {: pre}
        ibmcloud sat host ls --location LOCATION_NAME_OR_ID | grep unassigned
        ```
    3. 对于要检查的每个主机,获取主机详细信息并在输出中记录 **标签**。
    ```sh {: pre}
        ibmcloud sat host get --location LOCATION_NAME_OR_ID --host HOST_NAME_OR_ID
        ```
        示例输出
        ```sh {: screen}
        ...
        Labels      
        app      webserver   
        cpu      4   
        memory   3874564
        os       RHCOS
        ...
        ```
    
  3. 更新可用主机的标签以匹配您希望主机可用于自动分配的工作程序池的所有标签。 您可以选择指定区域,以确保仅将主机自动分配给该区域。

    将自动应用主机上的 cpu,os 和 memory 标签,并且无法对其进行编辑。

    ibmcloud sat host update --location <location_name_or_ID> --host <host_name_or_ID> -hl <key=value> [-hl <key=value>] [--zone <zone1>]
    

禁用主机自动分配

以下操作将禁用工作程序池的主机自动分配。 稍后,您可以 重新启用主机自动分配。

重新启用主机自动分配

如果 已禁用主机自动分配,那么可以重新启用自动分配。

  1. 确保您具有 具有与工作程序池的主机标签匹配的标签的可用主机。
  2. 调整工作程序池大小 以设置每个专区的请求大小,重新平衡工作程序池,然后再次启用自动分配。

对于 Satellite 集群,如果您已手动将工作节点分配到工作节点池中,请勿使用 ibmcloud oc worker-pool rebalance 命令。 对包含手动分配的工作节点的工作池进行重新平衡时,移除的工作节点数量超过了预期数量。