搜索

4.2. 管理计算节点

download PDF

本文档论述了如何通过 Red Hat OpenShift Service on AWS (ROSA) 管理计算(也称为 worker)节点。

机器池中配置了计算节点的大部分更改。机器池是集群中有相同配置的计算节点的一组计算节点,提供轻松管理。

您可以编辑机器池配置选项,如扩展、添加节点标签和添加污点。

4.2.1. 创建机器池

在 AWS (ROSA)集群上安装 Red Hat OpenShift Service 时会创建一个机器池。安装后,您可以使用 OpenShift Cluster Manager 或 ROSA CLI (rosa) 为集群创建额外的机器池。

注意

对于 ROSA CLI rosa 版本 1.2.25 及更早版本的用户,与集群创建的机器池被识别为 默认值。对于 ROSA CLI rosa 版本 1.2.26 及更高版本的用户,在集群中创建的机器池被识别为 worker

4.2.1.1. 使用 OpenShift Cluster Manager 创建机器池

您可以使用 OpenShift Cluster Manager 为您的 Red Hat OpenShift Service on AWS (ROSA) 集群创建额外的机器池。

前提条件

  • 您创建了 ROSA 集群。

流程

  1. 进入到 OpenShift Cluster Manager 并选择您的集群。
  2. Machine pool 选项卡下,点 Add machine pool
  3. 添加机器池名称
  4. 从下拉菜单中选择 Compute 节点实例类型。实例类型定义机器池中各个计算节点的 vCPU 和内存分配。

    注意

    在创建池后,您无法更改机器池的实例类型。

  5. 可选:为机器池配置自动扩展:

    1. 选择 Enable autoscaling 以自动扩展机器池中的机器数量,以满足部署需求。
    2. 设置自动扩展的最小和最大节点数限值。集群自动扩展不会减少或增加机器池节点数超过您指定的限制。

      • 如果您使用一个可用区部署集群,请设置最小和最大节点数。这会在可用区中定义最小和最大计算节点限值。
      • 如果您使用多个可用区部署集群,请为每个区设置 Minimum nodes per zoneMaximum nodes per zone。它定义每个区的最小和最大计算节点限值。

        注意

        另外,您可以在创建机器池后为机器池设置自动扩展首选项。

  6. 如果没有启用自动扩展,请选择计算节点计数:

    • 如果您使用一个可用区部署集群,请从下拉菜单中选择 Compute 节点数。这定义了置备到区域的机器池的计算节点数量。
    • 如果您使用多个可用区部署集群,请从下拉菜单中选择 Compute 节点数(每个区域)。这定义了每个区要置备到机器池的计算节点数量。
  7. 可选:配置 根磁盘大小
  8. 可选:为您的机器池添加节点标签和污点:

    1. 展开 Edit node labels and taints 菜单。
    2. Node labels 下,为您的节点标签添加 KeyValue 项。
    3. Taints 下,为您的污点添加 KeyValue 条目。

      注意

      只有集群已至少有一个没有污点的机器池时,才能创建带有污点的机器池。

    4. 对于每个污点,从下拉菜单中选择 Effect。可用选项包括 NoSchedulePreferNoScheduleNoExecute

      注意

      另外,您可以在创建机器池后添加节点标签和污点。

  9. 可选:选择用于此机器池中节点的附加自定义安全组。您必须已创建了安全组,并将其与您为这个集群选择的 VPC 关联。您无法在创建机器池后添加或编辑安全组。如需更多信息,请参阅"添加资源"部分中的安全组的要求。

    重要

    您可以使用最多 10 个额外的安全组用于带有 HCP 集群的 ROSA 上的机器池。

  10. 可选:如果要配置机器池将机器部署为非保障的 AWS Spot 实例,请使用 Amazon EC2 Spot 实例:

    1. 选择 使用 Amazon EC2 Spot 实例
    2. 选择 Use On-Demand 实例价格 即可使用按需实例价格。或者,选择 Set maximum price 来为 Spot 实例定义最大每小时价格。

      有关 Amazon EC2 Spot 实例的更多信息,请参阅 AWS 文档

      重要

      您的 Amazon EC2 Spot 实例可能随时中断。仅对可容许中断的工作负载使用 Amazon EC2 Spot 实例。

      注意

      如果为机器池选择了使用 Amazon EC2 Spot 实例,则在创建机器池后无法禁用该选项。

  11. Add machine pool 创建机器池。

验证

  • 验证机器池页面中是否存在 机器池,配置是如预期的。

4.2.1.2. 使用 ROSA CLI 创建机器池

您可以使用 ROSA CLI (rosa) 为 Red Hat OpenShift Service 在 AWS (ROSA) 集群上创建额外的机器池。

前提条件

  • 在您的工作站上安装和配置了最新的 Red Hat OpenShift Service on AWS (ROSA) CLI rosa
  • 您可以使用 ROSA CLI (rosa)登录到您的红帽帐户。
  • 您创建了 ROSA 集群。

流程

  • 要添加不使用自动扩展的机器池,请创建机器池,并定义实例类型、计算(也称为 worker)节点数和节点标签:

    $ rosa create machinepool --cluster=<cluster-name> \
                              --name=<machine_pool_id> \ 1
                              --replicas=<replica_count> \ 2
                              --instance-type=<instance_type> \ 3
                              --labels=<key>=<value>,<key>=<value> \ 4
                              --taints=<key>=<value>:<effect>,<key>=<value>:<effect> \ 5
                              --use-spot-instances \ 6
                              --spot-max-price=0.5 \ 7
                              --disk-size=<disk_size> 8
                              --availability-zone=<availability_zone_name> 9
                              --additional-security-group-ids <sec_group_id> 10
                              --subnet string 11
    1
    指定机器池的名称。将 <machine_pool_id> 替换为机器池的名称。
    2
    指定要置备的计算节点数量。如果您使用单一可用区部署了 ROSA,这定义了要置备到区域的机器池的计算节点数量。如果您使用多个可用区部署集群,这会定义在所有区中要置备的计算节点数量,计数必须是 3。在没有配置自动扩展时,需要 --replicas 参数。
    3
    可选:为您的机器池中的计算节点设置实例类型。实例类型定义池中各个计算节点的 vCPU 和内存分配。将 <instance_type> 替换为实例类型。默认值为 m5.xlarge。在创建池后,您无法更改机器池的实例类型。
    4
    可选:定义机器池的标签。将 <key>=<value>,<key>=<value> 替换为以逗号分隔的键-值对,例如 --labels=key1=value1,key2=value2
    5
    可选:定义机器池的污点。使用每个污点的实际的 key, value, 和 effect 替换 Replace <key>=<value>:<effect>,<key>=<value>:<effect>,例如 --taints=key1=value1:NoSchedule,key2=value2:NoExecute。可用效果包括 NoSchedulePreferNoScheduleNoExecute
    6
    可选:配置机器池以将机器部署为非保障的 AWS Spot 实例。如需更多信息,请参阅 AWS 文档中的 Amazon EC2 Spot 实例。如果为机器池选择了使用 Amazon EC2 Spot 实例,则在创建机器池后无法禁用该选项。
    7
    可选:如果选择使用 Spot 实例,您可以指定此参数来为 Spot 实例定义最大每小时价格。如果没有指定这个参数,则使用 on-demand 价格。
    重要

    您的 Amazon EC2 Spot 实例可能随时中断。仅对可容许中断的工作负载使用 Amazon EC2 Spot 实例。

    8
    可选:指定 worker 节点磁盘大小。该值可以是 GB、GiB、TB 或 TiB。将 <disk_size > 替换为数字值和单位,如 --disk-size=200GiB
    9
    可选: 对于 Multi-AZ 集群,您可以在您选择的 Single-AZ 中创建机器池。将 <az > 替换为 Single-AZ 名称。
    注意

    Multi-AZ 集群保留一个 Multi-AZ control plane,且可以在 Single-AZ 或 Multi-AZ 之间具有 worker 机器池。机器池在可用区间平均分配机器(节点)。

    警告

    如果您使用 Single-AZ 选择 worker 机器池,则无论机器副本数如何,该机器池都没有容错功能。对于容错 worker 机器池,请选择 Multi-AZ 机器池将机器分发到 3 的倍数跨可用区。

    • 具有三个可用区的 Multi-AZ 机器池只能有 3 的倍数,如 3、6、9 等。
    • 带有一个可用区的 Single-AZ 机器池可以具有 1 的倍数,如 1,2,3,4 等。
    10
    可选: 对于没有红帽受管 VPC 的集群中的机器池,您可以选择在机器池中使用的额外自定义安全组。您必须已创建了安全组,并将其与您为这个集群选择的 VPC 关联。您无法在创建机器池后添加或编辑安全组。如需更多信息,请参阅"添加资源"部分中的安全组的要求。
    重要

    您可以使用最多 10 个额外的安全组用于带有 HCP 集群的 ROSA 上的机器池。

    11
    可选: 对于 BYO VPC 集群,您可以选择创建 Single-AZ 机器池的子网。如果子网没有集群创建子网,则必须有一个带有键 kubernetes.io/cluster/<infra-id > 和值 shared 的标签。客户可使用以下命令获取 Infra ID:
    $ rosa describe cluster -c <cluster name>|grep "Infra ID:"

    输出示例

    Infra ID:                   mycluster-xqvj7

    注意

    您不能同时设置 --subnet--availability-zone,仅允许创建 Single-AZ 机器池。

    以下示例创建一个名为 mymachinepool 的机器池,它使用 m5.xlarge 实例类型并具有 2 个计算节点副本。这个示例还添加了 2 个特定于工作负载的标签:

    $ rosa create machinepool --cluster=mycluster --name=mymachinepool --replicas=2 --instance-type=m5.xlarge --labels=app=db,tier=backend

    输出示例

    I: Machine pool 'mymachinepool' created successfully on cluster 'mycluster'
    I: To view all machine pools, run 'rosa list machinepools -c mycluster'

  • 要添加使用自动扩展的机器池,请创建机器池,并定义自动扩展配置、实例类型和节点标签:

    $ rosa create machinepool --cluster=<cluster-name> \
                              --name=<machine_pool_id> \ 1
                              --enable-autoscaling \ 2
                              --min-replicas=<minimum_replica_count> \ 3
                              --max-replicas=<maximum_replica_count> \ 4
                              --instance-type=<instance_type> \ 5
                              --labels=<key>=<value>,<key>=<value> \ 6
                              --taints=<key>=<value>:<effect>,<key>=<value>:<effect> \ 7
                              --use-spot-instances \ 8
                              --spot-max-price=0.5 9
                              --availability-zone=<availability_zone_name> 10
    1
    指定机器池的名称。将 <machine_pool_id> 替换为机器池的名称。
    2
    在机器池中启用自动扩展来满足部署需求。
    3 4
    定义最小和最大计算节点限值。集群自动扩展不会减少或增加机器池节点数超过您指定的限制。如果您使用单个可用区部署 ROSA,--min-replicas--max-replicas 参数在区的机器池中定义自动扩展限制。如果您使用多个可用区部署集群,则参数在所有区总数中定义自动扩展限制,计数必须为 3。
    5
    可选:为您的机器池中的计算节点设置实例类型。实例类型定义池中各个计算节点的 vCPU 和内存分配。将 <instance_type> 替换为实例类型。默认值为 m5.xlarge。在创建池后,您无法更改机器池的实例类型。
    6
    可选:定义机器池的标签。将 <key>=<value>,<key>=<value> 替换为以逗号分隔的键-值对,例如 --labels=key1=value1,key2=value2
    7
    可选:定义机器池的污点。使用每个污点的实际的 key, value, 和 effect 替换 Replace <key>=<value>:<effect>,<key>=<value>:<effect>,例如 --taints=key1=value1:NoSchedule,key2=value2:NoExecute。可用效果包括 NoSchedulePreferNoScheduleNoExecute
    8
    可选:配置机器池以将机器部署为非保障的 AWS Spot 实例。如需更多信息,请参阅 AWS 文档中的 Amazon EC2 Spot 实例。如果为机器池选择了使用 Amazon EC2 Spot 实例,则在创建机器池后无法禁用该选项。
    重要

    您的 Amazon EC2 Spot 实例可能随时中断。仅对可容许中断的工作负载使用 Amazon EC2 Spot 实例。

    9
    可选:如果选择使用 Spot 实例,您可以指定此参数来为 Spot 实例定义最大每小时价格。如果没有指定这个参数,则使用 on-demand 价格。
    10
    可选: 对于 Multi-AZ 集群,您可以在您选择的 Single-AZ 中创建机器池。将 <az > 替换为 Single-AZ 名称。

    以下示例创建一个名为 mymachinepool 的机器池,它使用 m5.xlarge 实例类型并启用自动扩展。最少的计算节点限值为 3,最大为 6 个。这个示例还添加了 2 个特定于工作负载的标签:

    $ rosa create machinepool --cluster=mycluster --name=mymachinepool --enable-autoscaling --min-replicas=3 --max-replicas=6 --instance-type=m5.xlarge --labels=app=db,tier=backend

    输出示例

    I: Machine pool 'mymachinepool' created successfully on cluster 'mycluster'
    I: To view all machine pools, run 'rosa list machinepools -c mycluster'

验证

您可以列出集群中的所有机器池,或描述单独的机器池。

  1. 列出集群中的可用机器池:

    $ rosa list machinepools --cluster=<cluster_name>

    输出示例

    ID             AUTOSCALING  REPLICAS  INSTANCE TYPE  LABELS                  TAINTS    AVAILABILITY ZONES                    SPOT INSTANCES
    Default        No           3         m5.xlarge                                        us-east-1a, us-east-1b, us-east-1c    N/A
    mymachinepool  Yes          3-6       m5.xlarge      app=db, tier=backend              us-east-1a, us-east-1b, us-east-1c    No

  2. 描述集群中特定机器池的信息:

    $ rosa describe machinepool --cluster=<cluster_name> mymachinepool

    输出示例

    ID:                         mymachinepool
    Cluster ID:                 27iimopsg1mge0m81l0sqivkne2qu6dr
    Autoscaling:                Yes
    Replicas:                   3-6
    Instance type:              m5.xlarge
    Labels:                     app=db, tier=backend
    Taints:
    Availability zones:         us-east-1a, us-east-1b, us-east-1c
    Subnets:
    Spot instances:             No
    Disk size:                  300 GiB
    Security Group IDs:

  3. 验证机器池已包含在输出中,并且配置符合预期。

4.2.2. 配置机器池磁盘卷

可以配置机器池磁盘大小以提供额外的灵活性。默认磁盘大小为 300 GiB。对于集群版本 4.13 或更早版本,磁盘大小可以至少配置为 128 GiB,最大值为 1 TiB。对于版本 4.14 及更新的版本,磁盘大小可以至少配置为 128 GiB,最多为 16 TiB。

您可以使用 OpenShift Cluster Manager 或 ROSA CLI (rosa)为集群配置机器池磁盘大小。

注意

现有集群和机器池节点卷无法调整大小。

重要

默认磁盘大小为 300 GiB。对于集群版本 4.13 或更早版本,磁盘大小可以至少配置为 128 GiB,最大值为 1 TiB。对于版本 4.14 及更新的版本,磁盘大小可以至少配置为 128 GiB,最多为 16 TiB。

4.2.2.1. 使用 OpenShift Cluster Manager 配置机器池磁盘卷

集群创建的先决条件

  • 您可以选择在集群安装过程中为默认机器池选择节点磁盘大小。

集群创建的步骤

  1. 从 ROSA 集群向导中,进入到 Cluster settings。
  2. 导航到 Machine pool 步骤。
  3. 选择所需的 Root 磁盘大小
  4. 选择 Next 以继续创建集群。

机器池创建的先决条件

  • 您可以选择安装集群后为新机器池选择节点磁盘大小。

机器池创建的步骤

  1. 进入到 OpenShift Cluster Manager 并选择您的集群。
  2. 导航到 Machine pool 选项卡
  3. Add machine pool
  4. 选择所需的 Root 磁盘大小
  5. 选择 Add machine pool 来创建机器池。

4.2.2.2. 使用 ROSA CLI 配置机器池磁盘卷

集群创建的先决条件

  • 您可以选择在集群安装过程中为默认机器池选择根磁盘大小。

集群创建的步骤

  • 在为所需根磁盘大小创建 OpenShift 集群时运行以下命令:

    $ rosa create cluster --worker-disk-size=<disk_size>

    该值可以是 GB、GiB、TB 或 TiB。将 '<disk_size>' 替换为数字值和单元,如 '--worker-disk-size=200GiB'。您不能分隔数字和单位。不允许使用空格。

机器池创建的先决条件

  • 您可以选择安装集群后为新机器池选择根磁盘大小。

机器池创建的步骤

  1. 执行以下命令来扩展集群:

    $ rosa create machinepool --cluster=<cluster_id>  1
                              --disk-size=<disk_size>  2
    1
    指定现有 OpenShift 集群的 ID 或名称
    2
    指定 worker 节点磁盘大小。该值可以是 GB、GiB、TB 或 TiB。将 '<disk_size>' 替换为数字值和单位,如 '--disk-size=200GiB'。您不能分隔数字和单位。不允许使用空格。
  2. 登录到 AWS 控制台并找到 EC2 虚拟机根卷大小,以确认新的机器池磁盘大小。

其他资源

  • 如需可用于 rosa create machinepool 子命令的参数的详细列表,请参阅使用 ROSA CLI 管理对象

4.2.3. 删除机器池

如果您的工作负载要求已更改,当前机器池已不再满足您的需要,则可以删除机器池。

您可以使用 OpenShift Cluster Manager 或 ROSA CLI (rosa)删除机器池。

4.2.3.1. 使用 OpenShift Cluster Manager 删除机器池

您可以使用 OpenShift Cluster Manager 删除 Red Hat OpenShift Service on AWS (ROSA)集群的机器池。

前提条件

  • 您创建了 ROSA 集群。
  • 集群处于 ready 状态。
  • 您有一个没有污点的机器池,至少有两个用于单个 AZ 集群或用于多个 AZ 集群的三个实例。

流程

  1. OpenShift Cluster Manager 中,进入到 Clusters 页面,再选择包含您要删除的机器池的集群。
  2. 在所选集群中,选择 Machine pool 选项卡。
  3. Machine pool 选项卡中,点您要删除的机器池的选项菜单 kebab
  4. 点击 Delete。

所选机器池已删除。

4.2.3.2. 使用 ROSA CLI 删除机器池

您可以使用 ROSA CLI 删除 Red Hat OpenShift Service on AWS (ROSA)集群的机器池。

注意

对于 ROSA CLI rosa 版本 1.2.25 及更早版本的用户,无法删除与集群中创建的机器池(ID='Default')。对于 ROSA CLI rosa 版本 1.2.26 及更新的版本的用户,只要集群中有一个没有污点的机器池,且至少有一个副本用于一个 Multi-AZ 集群或 Multi-AZ 集群的三个副本就可以删除。

前提条件

  • 您创建了 ROSA 集群。
  • 集群处于 ready 状态。
  • 您有一个没有污点的现有机器池,至少有两个用于 Single-AZ 集群或 Multi-AZ 集群的实例。

流程

  1. 在 ROSA CLI 中运行以下命令:

    $ rosa delete machinepool -c=<cluster_name> <machine_pool_ID>

    输出示例

    ? Are you sure you want to delete machine pool <machine_pool_ID> on cluster <cluster_name>? (y/N)

  2. 输入 'y' 以删除机器池。

    所选机器池已删除。

4.2.4. 手动扩展计算节点

如果您还没有为机器池启用自动扩展,您可以手动扩展池中计算(也称为 worker)节点的数量来满足部署需求。

您必须单独扩展每个机器池。

前提条件

  • 在您的工作站上安装和配置了最新的 Red Hat OpenShift Service on AWS (ROSA) CLI rosa
  • 您可以使用 ROSA CLI (rosa)登录到您的红帽帐户。
  • 创建一个 Red Hat OpenShift Service on AWS (ROSA) 集群。
  • 您有一个现有的机器池。

流程

  1. 列出集群中的机器池:

    $ rosa list machinepools --cluster=<cluster_name>

    输出示例

    ID        AUTOSCALING   REPLICAS    INSTANCE TYPE  LABELS    TAINTS   AVAILABILITY ZONES    DISK SIZE   SG IDs
    default   No            2           m5.xlarge                         us-east-1a            300GiB      sg-0e375ff0ec4a6cfa2
    mp1       No            2           m5.xlarge                         us-east-1a            300GiB      sg-0e375ff0ec4a6cfa2

  2. 增加或减少机器池中的计算节点副本数量:

    $ rosa edit machinepool --cluster=<cluster_name> \
                            --replicas=<replica_count> \ 1
                            <machine_pool_id> 2
    1
    如果您使用一个可用区部署 Red Hat OpenShift Service on AWS (ROSA),则副本数定义为区的机器池置备的计算节点数量。如果您使用多个可用区部署集群,则计数定义所有区中机器池中的计算节点总数,且必须是 3 的倍数。
    2
    <machine_pool_id> 替换为机器池的 ID,如上一命令的输出中所示。

验证

  1. 列出集群中可用的机器池:

    $ rosa list machinepools --cluster=<cluster_name>

    输出示例

    ID        AUTOSCALING   REPLICAS    INSTANCE TYPE  LABELS    TAINTS   AVAILABILITY ZONES    DISK SIZE   SG IDs
    default   No            2           m5.xlarge                         us-east-1a            300GiB      sg-0e375ff0ec4a6cfa2
    mp1       No            3           m5.xlarge                         us-east-1a            300GiB      sg-0e375ff0ec4a6cfa2

  2. 在上一命令的输出中,验证机器池的计算节点副本数是否如预期。在示例输出中,mp1 机器池的计算节点副本数已扩展到 3。

4.2.5. 节点标签

标签是应用于 Node 对象的键值对。您可以使用标签来组织一组对象,并控制 pod 的调度。

您可以在集群创建过程中或之后添加标签。标签可以随时修改或更新。

其他资源

4.2.5.1. 在机器池中添加节点标签

随时为计算(也称为 worker)节点添加或编辑标签,以便以与您的相关方式管理节点。例如,您可以将工作负载的类型分配给特定的节点。

标签以一个键值对的形式进行分配。对于其分配到的对象,每个键需要是唯一的。

前提条件

  • 在您的工作站上安装和配置了最新的 Red Hat OpenShift Service on AWS (ROSA) CLI rosa
  • 您可以使用 ROSA CLI (rosa)登录到您的红帽帐户。
  • 创建一个 Red Hat OpenShift Service on AWS (ROSA) 集群。
  • 您有一个现有的机器池。

流程

  1. 列出集群中的机器池:

    $ rosa list machinepools --cluster=<cluster_name>

    输出示例

    ID           AUTOSCALING  REPLICAS  INSTANCE TYPE  LABELS    TAINTS    AVAILABILITY ZONES    SPOT INSTANCES
    Default      No           2         m5.xlarge                          us-east-1a            N/A
    db-nodes-mp  No           2         m5.xlarge                          us-east-1a            No

  2. 为机器池添加或更新节点标签:

    • 要为不使用自动扩展的机器池添加或更新节点标签,请运行以下命令:

      $ rosa edit machinepool --cluster=<cluster_name> \
                              --replicas=<replica_count> \ 1
                              --labels=<key>=<value>,<key>=<value> \ 2
                              <machine_pool_id>
      1
      对于不使用自动扩展的机器池,必须在添加节点标签时提供副本数。如果没有指定 --replicas 参数,则在命令完成前会提示您输入副本数。如果您使用一个可用区部署 Red Hat OpenShift Service on AWS (ROSA),则副本数定义为区的机器池置备的计算节点数量。如果您使用多个可用区部署集群,则计数定义所有区中机器池中的计算节点总数,且必须是 3 的倍数。
      2
      <key>=<value>,<key>=<value> 替换为以逗号分隔的键-值对,例如 --labels=key1=value1,key2=value2。此列表会持续覆盖对节点标签所做的任何修改。

      以下示例将标签添加到 db-nodes-mp 机器池:

      $ rosa edit machinepool --cluster=mycluster --replicas=2 --labels=app=db,tier=backend db-nodes-mp

      输出示例

      I: Updated machine pool 'db-nodes-mp' on cluster 'mycluster'

    • 要为使用自动扩展的机器池添加或更新节点标签,请运行以下命令:

      $ rosa edit machinepool --cluster=<cluster_name> \
                              --min-replicas=<minimum_replica_count> \ 1
                              --max-replicas=<maximum_replica_count> \ 2
                              --labels=<key>=<value>,<key>=<value> \ 3
                              <machine_pool_id>
      1 2
      对于使用自动扩展的机器池,您必须提供最小和最大计算节点副本限制。如果没有指定参数,则在命令完成前会提示您输入值。集群自动扩展不会减少或增加机器池节点数超过您指定的限制。如果您使用单个可用区部署 ROSA,--min-replicas--max-replicas 参数在区的机器池中定义自动扩展限制。如果您使用多个可用区部署集群,则参数在所有区总数中定义自动扩展限制,计数必须为 3。
      3
      <key>=<value>,<key>=<value> 替换为以逗号分隔的键-值对,例如 --labels=key1=value1,key2=value2。此列表会持续覆盖对节点标签所做的任何修改。

      以下示例将标签添加到 db-nodes-mp 机器池:

      $ rosa edit machinepool --cluster=mycluster --min-replicas=2 --max-replicas=3 --labels=app=db,tier=backend db-nodes-mp

      输出示例

      I: Updated machine pool 'db-nodes-mp' on cluster 'mycluster'

验证

  1. 使用新标签描述机器池的详情:

    $ rosa describe machinepool --cluster=<cluster_name> <machine-pool-name>

    输出示例

    ID:                         db-nodes-mp
    Cluster ID:                 <ID_of_cluster>
    Autoscaling:                No
    Replicas:                   2
    Instance type:              m5.xlarge
    Labels:                     app=db, tier=backend
    Taints:
    Availability zones:         us-east-1a
    Subnets:
    Spot instances:             No
    Disk size:                  300 GiB
    Security Group IDs:

  2. 验证您的机器池在输出中是否包含这些标签。

4.2.6. 为机器池添加标签

您可以在机器池中为计算节点添加标签(也称为 worker 节点),为置备机器池时生成的 AWS 资源引入自定义用户标签。

4.2.6.1. 使用 ROSA CLI 为机器池添加标签

您可以使用 ROSA 命令行界面(CLI)为 Red Hat OpenShift Service on AWS 集群添加标签。

重要

您必须确保标签键不是 awsred-hat-managedred-hat-clustertypeName。另外,您不能设置以 kubernetes.io/cluster/ 开头的标签键。标签的键不能超过 128 个字符,而标签的值不能超过 256 个字符。红帽保留在以后添加其他保留标签的权利。

前提条件

  • 在您的工作站上安装和配置了最新的 AWS (aws)、ROSA (rosa) 和 OpenShift (oc) CLI。
  • 您可以使用 rosa CLI 登录到您的红帽帐户。
  • 创建一个 Red Hat OpenShift Service on AWS (ROSA) 集群。

流程

  • 运行以下命令,创建带有自定义标签的机器池:

    $ rosa create machinepools --cluster=<name> --replicas=<replica_count> \
         --name <mp_name> --tags='<key> <value>,<key> <value>' \ 1
    1
    <key> <value>,<key&gt; <value> 替换为每个标签的键和值。

    输出示例

    $ rosa create machinepools --cluster=mycluster --replicas 2 --tags='tagkey1 tagvalue1,tagkey2 tagvaluev2'
    
    I: Checking available instance types for machine pool 'mp-1'
    I: Machine pool 'mp-1' created successfully on cluster 'mycluster'
    I: To view the machine pool details, run 'rosa describe machinepool --cluster mycluster --machinepool mp-1'
    I: To view all machine pools, run 'rosa list machinepools --cluster mycluster'

验证

  • 使用 describe 命令查看带有标签的机器池的详情,并验证输出中您的机器池是否包含标签:

    $ rosa describe machinepool --cluster=<cluster_name> <machine_pool_name>

    输出示例

    $ rosa describe machinepool --cluster classic-rosa --machinepool mp-1
    
    ID:                                    mp-1
    Cluster ID:                            2baiirqa2141oreotoivp4sipq84vp5g
    Autoscaling:                           No
    Replicas:                              2
    Instance type:                         m5.xlarge
    Labels:
    Taints:
    Availability zones:                    us-east-1a
    Subnets:
    Spot instances:                        No
    Disk size:                             300 GiB
    Additional Security Group IDs:
    Tags:                                  red-hat-clustertype=rosa, red-hat-managed=true, tagkey1=tagvalue1, tagkey2=tagvaluev2

4.2.7. 为机器池添加污点

您可以为机器池中的计算(也称为 worker)节点添加污点,以控制哪些 pod 调度到它们。将污点应用到机器池时,调度程序无法将 pod 放置到池中节点上,除非 pod 规格包含污点的容限。可以使用 OpenShift Cluster Manager 或 Red Hat OpenShift Service on AWS (ROSA) CLI ( rosa )将污点添加到机器池中。

注意

集群必须至少有一个不包含任何污点的机器池。

4.2.7.1. 使用 OpenShift Cluster Manager 为机器池添加污点

您可以使用 OpenShift Cluster Manager 为 Red Hat OpenShift Service on AWS (ROSA)集群添加污点。

前提条件

  • 您在 AWS (ROSA)集群上创建了 Red Hat OpenShift Service。
  • 您有一个现有的机器池,它不包含任何污点,至少包含两个实例。

流程

  1. 进入到 OpenShift Cluster Manager 并选择您的集群。
  2. Machine pool 选项卡中,点您要向其添加污点的机器池的选项菜单 kebab
  3. 选择 Edit taint
  4. 为您的污点添加 KeyValue 条目。
  5. 从下拉菜单中选择污点的 Effect。可用选项包括 NoSchedulePreferNoScheduleNoExecute
  6. 可选: 如果要向机器池添加更多污点,请选择 Add taint
  7. Save 将污点应用到机器池。

验证

  1. Machine pool 选项卡中,选择机器池旁边的 > 来扩展视图。
  2. 验证您的污点是否在展开的视图中的 Taints 下列出。

4.2.7.2. 使用 ROSA CLI 为机器池添加污点

您可以使用 ROSA CLI 将污点添加到 Red Hat OpenShift Service on AWS (ROSA)集群的机器池中。

注意

对于 ROSA CLI rosa 版本 1.2.25 及之前的版本的用户,在与集群创建的机器池(ID=Default)中无法更改污点数量。对于 ROSA CLI rosa 版本 1.2.26 及更高版本的用户,可以在与集群一同创建的机器池中更改污点数量(ID=worker)。必须至少有一个没有污点的机器池,以及 Single-AZ 集群至少有两个副本,或 Multi-AZ 集群的三个副本。

前提条件

  • 在您的工作站上安装和配置了最新的 AWS (aws)、ROSA (rosa) 和 OpenShift (oc) CLI。
  • 您可以使用 rosa CLI 登录到您的红帽帐户。
  • 创建一个 Red Hat OpenShift Service on AWS (ROSA) 集群。
  • 您有一个现有的机器池,它不包含任何污点,至少包含两个实例。

流程

  1. 运行以下命令列出集群中的机器池:

    $ rosa list machinepools --cluster=<cluster_name>

    输出示例

    ID           AUTOSCALING  REPLICAS  INSTANCE TYPE  LABELS    TAINTS    AVAILABILITY ZONES    SPOT INSTANCES     DISK SIZE   SG IDs
    Default      No           2         m5.xlarge                          us-east-1a            N/A                300 GiB     sg-0e375ff0ec4a6cfa2
    db-nodes-mp  No           2         m5.xlarge                          us-east-1a            No                 300 GiB     sg-0e375ff0ec4a6cfa2

  2. 为机器池添加或更新污点:

    • 要为不使用自动扩展的机器池添加或更新污点,请运行以下命令:

      $ rosa edit machinepool --cluster=<cluster_name> \
                              --replicas=<replica_count> \ 1
                              --taints=<key>=<value>:<effect>,<key>=<value>:<effect> \ 2
                              <machine_pool_id>
      1
      对于不使用自动扩展的机器池,必须在添加污点时提供副本数。如果没有指定 --replicas 参数,则在命令完成前会提示您输入副本数。如果您使用一个可用区部署 Red Hat OpenShift Service on AWS (ROSA),则副本数定义为区的机器池置备的计算节点数量。如果您使用多个可用区部署集群,则计数定义所有区中机器池中的计算节点总数,且必须是 3 的倍数。
      2
      使用每个污点的实际的 key, value, 和 effect 替换 Replace <key>=<value>:<effect>,<key>=<value>:<effect>,例如 --taints=key1=value1:NoSchedule,key2=value2:NoExecute。可用效果包括 NoSchedulePreferNoScheduleNoExecute。此列表会持续覆盖对节点污点所做的任何修改。

      以下示例将污点添加到 db-nodes-mp 机器池:

      $ rosa edit machinepool --cluster=mycluster --replicas 2 --taints=key1=value1:NoSchedule,key2=value2:NoExecute db-nodes-mp

      输出示例

      I: Updated machine pool 'db-nodes-mp' on cluster 'mycluster'

    • 要为使用自动扩展的机器池添加或更新污点,请运行以下命令:

      $ rosa edit machinepool --cluster=<cluster_name> \
                              --min-replicas=<minimum_replica_count> \ 1
                              --max-replicas=<maximum_replica_count> \ 2
                              --taints=<key>=<value>:<effect>,<key>=<value>:<effect> \ 3
                              <machine_pool_id>
      1 2
      对于使用自动扩展的机器池,您必须提供最小和最大计算节点副本限制。如果没有指定参数,则在命令完成前会提示您输入值。集群自动扩展不会减少或增加机器池节点数超过您指定的限制。如果您使用单个可用区部署 ROSA,--min-replicas--max-replicas 参数在区的机器池中定义自动扩展限制。如果您使用多个可用区部署集群,则参数在所有区总数中定义自动扩展限制,计数必须为 3。
      3
      使用每个污点的实际的 key, value, 和 effect 替换 Replace <key>=<value>:<effect>,<key>=<value>:<effect>,例如 --taints=key1=value1:NoSchedule,key2=value2:NoExecute。可用效果包括 NoSchedulePreferNoScheduleNoExecute。此列表会持续覆盖对节点污点所做的任何修改。

      以下示例将污点添加到 db-nodes-mp 机器池:

      $ rosa edit machinepool --cluster=mycluster --min-replicas=2 --max-replicas=3 --taints=key1=value1:NoSchedule,key2=value2:NoExecute db-nodes-mp

      输出示例

      I: Updated machine pool 'db-nodes-mp' on cluster 'mycluster'

验证

  1. 描述带有新污点的机器池的详情:

    $ rosa describe machinepool --cluster=<cluster_name> <machine-pool-name>

    输出示例

    ID:                         db-nodes-mp
    Cluster ID:                 <ID_of_cluster>
    Autoscaling:                No
    Replicas:                   2
    Instance type:              m5.xlarge
    Labels:
    Taints:                     key1=value1:NoSchedule, key2=value2:NoExecute
    Availability zones:         us-east-1a
    Subnets:
    Spot instances:             No
    Disk size:                  300 GiB
    Security Group IDs:

  2. 验证您的机器池是否包含在输出中。

4.2.8. 在机器池中添加节点调整

您可以为机器池中的计算(也称为 worker)节点添加调整,以控制其在带有托管 control plane (HCP)集群的 Red Hat OpenShift Service on AWS (ROSA)上的配置。

注意

这个功能只在带有托管的 control plane (HCP)集群的 Red Hat OpenShift Service on AWS (ROSA)上被支持。

前提条件

  • 在您的工作站上安装和配置了最新的 Red Hat OpenShift Service on AWS (ROSA) CLI rosa
  • 您可以使用 ROSA CLI 登录到您的红帽帐户。
  • 已使用托管的 control plane (HCP)集群创建了 Red Hat OpenShift Service on AWS (ROSA)。
  • 您有一个现有的机器池。
  • 您有一个现有的调优配置。

流程

  1. 列出集群中的所有机器池:

    $ rosa list machinepools --cluster=<cluster_name>

    输出示例

    ID          AUTOSCALING  REPLICAS  INSTANCE TYPE [...] AVAILABILITY ZONES  SUBNET  VERSION  AUTOREPAIR  TUNING CONFIGS
    workers      No           2         m5.xlarge    [...] us-east-1a          N/A     4.12.14  Yes
    db-nodes-mp  No           2         m5.xlarge    [...] us-east-1a          No      4.12.14  Yes

  2. 您可以将调优配置添加到现有或新机器池中。

    1. 在创建机器池时添加调整:

      $ rosa create machinepool -c <cluster-name> <machinepoolname> --tuning-configs <tuning_config_name>

      输出示例

      ? Tuning configs: sample-tuning
      I: Machine pool 'db-nodes-mp' created successfully on hosted cluster 'sample-cluster'
      I: To view all machine pools, run 'rosa list machinepools -c sample-cluster'

    2. 为机器池添加或更新调整:

      $ rosa edit machinepool -c <cluster-name> <machinepoolname> --tuning-configs <tuningconfigname>

      输出示例

      I: Updated machine pool 'db-nodes-mp' on cluster 'mycluster'

验证

  1. 列出集群中可用的机器池:

    $ rosa list machinepools --cluster=<cluster_name>

    输出示例

    ID          AUTOSCALING  REPLICAS  INSTANCE TYPE [...] AVAILABILITY ZONES  SUBNET  VERSION  AUTOREPAIR  TUNING CONFIGS
    workers      No           2         m5.xlarge    [...] us-east-1a          N/A     4.12.14  Yes
    db-nodes-mp  No           2         m5.xlarge    [...] us-east-1a          No      4.12.14  Yes          sample-tuning

  2. 验证您的机器池是否包含在输出中。

4.2.9. 使用 HCP 集群在 ROSA 中配置节点排空宽限期

您可以为集群中的机器池配置节点排空宽限期。机器池的节点排空宽限期是集群在升级或替换机器池时遵守 Pod Disruption Budget 保护的工作负载的时间。在这个宽限期后,所有剩余的工作负载都会强制被驱除。节点排空宽限期的值范围从 01 周。使用默认值 0 或空值时,机器池会排空而无需任何时间限制,直到完成为止。

前提条件

  • 在您的工作站上安装和配置了最新的 Red Hat OpenShift Service on AWS (ROSA) CLI rosa
  • 已使用托管的 control plane (HCP)集群创建了 Red Hat OpenShift Service on AWS (ROSA)。
  • 您有一个现有的机器池。

流程

  1. 运行以下命令,列出集群中的所有机器池:

    $ rosa list machinepools --cluster=<cluster_name>

    输出示例

    ID          AUTOSCALING  REPLICAS  INSTANCE TYPE [...] AVAILABILITY ZONES  SUBNET  VERSION  AUTOREPAIR  TUNING CONFIGS
    workers      No           2         m5.xlarge    [...] us-east-1a          N/A     4.14.18  Yes
    db-nodes-mp  No           2         m5.xlarge    [...] us-east-1a          No      4.14.18  Yes

  2. 运行以下命令,检查机器池的节点排空宽限期:

    $ rosa describe machinepool --cluster <cluster_name> <machinepool_name>

    输出示例

    ID:                                    workers
    Cluster ID:                            2a90jdl0i4p9r9k9956v5ocv40se1kqs
    Node drain grace period:               1

    1
    如果这个值为空,机器池会排空而不有时间限制,直到完成为止。
  3. 可选:运行以下命令来为机器池更新节点排空宽限期:

    $ rosa edit machinepool --node-drain-grace-period="<node_drain_grace_period_value>" --cluster=<cluster_name>  <machinepool_name>
    注意

    在机器池升级过程中更改节点排空宽限期适用于将来的升级,而不是进行升级。

验证

  1. 运行以下命令,检查机器池的节点排空宽限期:

    $ rosa describe machinepool --cluster <cluster_name> <machinepool_name>

    输出示例

    ID:                                    workers
    Cluster ID:                            2a90jdl0i4p9r9k9956v5ocv40se1kqs
    Node drain grace period:               30 minutes

  2. 在输出中验证您的机器池的正确 节点排空宽限期

4.2.10. 其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.