×

本文档描述如何使用Red Hat OpenShift Service on AWS (ROSA)管理计算(也称为worker)节点。

计算节点的大多数更改都在机器池上配置。机器池是集群中具有相同配置的一组计算节点,易于管理。

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

创建机器池

在安装Red Hat OpenShift Service on AWS (ROSA)集群时会创建一个机器池。安装后,您可以使用OpenShift集群管理器或ROSA CLI (rosa) 为您的集群创建其他机器池。

对于ROSA CLI rosa 1.2.25及更早版本的用户,与集群一起创建的机器池标识为Default。对于ROSA CLI rosa 1.2.26及更高版本的用户,与集群一起创建的机器池标识为worker

使用OpenShift集群管理器创建机器池

您可以使用OpenShift集群管理器为您的Red Hat OpenShift Service on AWS (ROSA)集群创建其他机器池。

先决条件
  • 您已创建了一个ROSA集群。

步骤
  1. 导航到OpenShift集群管理器并选择您的集群。

  2. 在“**机器池**”选项卡下,单击“**添加机器池**”。

  3. 添加一个**机器池名称**。

  4. 从下拉菜单中选择一个**计算节点实例类型**。实例类型定义机器池中每个计算节点的vCPU和内存分配。

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

  5. 可选:为机器池配置自动缩放

    1. 选择“**启用自动缩放**”以自动缩放机器池中机器的数量,以满足部署需求。

    2. 设置自动缩放的最小和最大节点数量限制。集群自动缩放器不会将机器池节点数量减少或增加到您指定的限制之外。

      • 如果您使用单个可用区部署了集群,请设置**最小和最大节点数量**。这定义了可用区中的最小和最大计算节点限制。

      • 如果您使用多个可用区部署了集群,请设置**每个可用区的最小节点数**和**每个可用区的最大节点数**。这定义了每个可用区的最小和最大计算节点限制。

        或者,您可以在创建机器池后设置机器池的自动缩放首选项。

  6. 如果您没有启用自动缩放,请选择一个计算节点数量

    • 如果您使用单个可用区部署了集群,请从下拉菜单中选择一个**计算节点数量**。这定义了要为该可用区配置到机器池的计算节点数量。

    • 如果您使用多个可用区部署了集群,请从下拉菜单中选择一个**计算节点数量(每个可用区)**。这定义了要为每个可用区配置到机器池的计算节点数量。

  7. 可选:配置**根磁盘大小**。

  8. 可选:为您的机器池添加节点标签和污点

    1. 展开“**编辑节点标签和污点**”菜单。

    2. 在“**节点标签**”下,为您的节点标签添加“**键**”和“**值**”条目。

    3. 在“**污点**”下,为您的污点添加“**键**”和“**值**”条目。

      只有在集群中至少已存在一个未设置污点的机器池的情况下,才能创建带有污点的机器池。

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

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

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

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

    1. 选择**使用 Amazon EC2 Spot 实例**。

    2. 保留选中**使用按需实例价格**以使用按需实例价格。或者,选择**设置最高价格**来定义 Spot 实例的最高小时价格。

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

      您的 Amazon EC2 Spot 实例可能随时中断。仅当工作负载能够容忍中断时,才使用 Amazon EC2 Spot 实例。

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

  11. 单击**添加机器池**以创建机器池。

验证
  • 验证机器池是否在**机器池**页面上可见,以及配置是否符合预期。

使用 ROSA CLI 创建机器池

您可以使用 ROSA CLI (rosa) 为您的 Red Hat OpenShift Service on AWS (ROSA) 集群创建其他机器池。

先决条件
  • 您已在工作站上安装并配置了最新的 Red Hat OpenShift Service on AWS (ROSA) CLI (rosa)。

  • 您已使用 ROSA CLI (rosa) 登录到您的 Red Hat 帐户。

  • 您已创建了一个ROSA集群。

步骤
  • 要添加不使用自动缩放的机器池,请创建机器池并定义实例类型、计算(也称为工作节点)节点数和节点标签。

    $ rosa create machinepool --cluster=<cluster-name> \
                              --name=<machine_pool_id> \
                              --replicas=<replica_count> \
                              --instance-type=<instance_type> \
                              --labels=<key>=<value>,<key>=<value> \
                              --taints=<key>=<value>:<effect>,<key>=<value>:<effect> \
                              --use-spot-instances \
                              --spot-max-price=<price> \
                              --disk-size=<disk_size> \
                              --availability-zone=<availability_zone_name> \
                              --additional-security-group-ids <sec_group_id> \
                              --subnet <subnet_id>

    其中

    --name=<machine_pool_id>

    指定机器池的名称。

    --replicas=<replica_count>

    指定要配置的计算节点数。如果您使用单个可用区部署了 ROSA,则这将定义要为此可用区的机器池配置的计算节点数。如果您使用多个可用区部署了集群,则这将定义跨所有可用区总共要配置的计算节点数,并且此计数必须是 3 的倍数。当未配置自动缩放时,需要使用--replicas参数。

    --instance-type=<instance_type>

    可选:设置机器池中计算节点的实例类型。实例类型定义池中每个计算节点的 vCPU 和内存分配。用实例类型替换<instance_type>。默认为m5.xlarge。创建机器池后,无法更改其实例类型。

    --labels=<key>=<value>,<key>=<value>

    可选:定义机器池的标签。用逗号分隔的键值对列表替换<key>=<value>,<key>=<value>,例如--labels=key1=value1,key2=value2

    --taints=<key>=<value>:<effect>,<key>=<value>:<effect>

    可选:定义机器池的污点。用每个污点的键、值和效果替换<key>=<value>:<effect>,<key>=<value>:<effect>,例如--taints=key1=value1:NoSchedule,key2=value2:NoExecute。可用效果包括NoSchedulePreferNoScheduleNoExecute

    --use-spot-instances

    可选:将机器池配置为部署为非保证的 AWS Spot 实例。有关信息,请参阅 AWS 文档中的Amazon EC2 Spot 实例。如果为机器池选择**使用 Amazon EC2 Spot 实例**,则创建机器池后将无法禁用此选项。

    --spot-max-price=<price>

    可选:如果您选择使用 Spot 实例,则可以使用此参数来定义 Spot 实例的最高小时价格。如果未指定此参数,则使用按需价格。

    您的 Amazon EC2 Spot 实例可能随时中断。仅当工作负载能够容忍中断时,才使用 Amazon EC2 Spot 实例。

    --disk-size=<disk_size>

    可选:指定工作节点磁盘大小。该值可以是 GB、GiB、TB 或 TiB。用数值和单位替换<disk_size>,例如--disk-size=200GiB

    --availability-zone=<availability_zone_name>

    可选:对于多可用区集群,您可以在选择的单可用区中创建机器池。用单可用区名称替换<availability_zone_name>

    多可用区集群保留多可用区控制平面,并且可以在单可用区或多可用区中拥有工作机器池。机器池在可用区之间均匀分配机器(节点)。

    如果您选择使用单可用区的机器池,则无论机器副本计数如何,该机器池都没有容错能力。对于容错工作机器池,选择多可用区机器池将在可用区中以 3 的倍数分配机器。

    • 具有三个可用区的多可用区机器池的机器计数只能是 3 的倍数,例如 3、6、9 等。

    • 具有一个可用区的单可用区机器池的机器计数可以是 1 的倍数,例如 1、2、3、4 等。

    --additional-security-group-ids <sec_group_id>

    可选:对于集群中没有 Red Hat 管理的 VPC 的机器池,您可以选择在机器池中使用的其他自定义安全组。您必须已经创建了安全组并将它们与为此集群选择的 VPC 关联。创建机器池后,无法添加或编辑安全组。有关更多信息,请参阅“其他资源”部分中关于安全组的要求。

    --subnet <subnet_id>

    可选:对于自带 VPC 集群,您可以选择一个子网来创建单可用区机器池。如果子网不在您的集群创建子网中,则必须有一个键为kubernetes.io/cluster/<infra-id>且值为shared的标签。客户可以使用以下命令获取 Infra ID。

    $ rosa describe cluster -c <cluster name>|grep "Infra ID:"
    示例输出
    Infra ID:                   mycluster-xqvj7

    您不能同时设置--subnet--availability-zone,单可用区机器池创建只能允许设置其中一个。

    以下示例创建一个名为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> \
                              --enable-autoscaling \
                              --min-replicas=<minimum_replica_count> \
                              --max-replicas=<maximum_replica_count> \
                              --instance-type=<instance_type> \
                              --labels=<key>=<value>,<key>=<value> \
                              --taints=<key>=<value>:<effect>,<key>=<value>:<effect> \
                              --availability-zone=<availability_zone_name> \
                              --use-spot-instances \
                              --spot-max-price=<price>

    其中

    --name=<machine_pool_id>

    指定机器池的名称。将<machine_pool_id>替换为您的机器池名称。

    --enable-autoscaling

    启用机器池中的自动伸缩功能,以满足部署需求。

    --min-replicas=<minimum_replica_count>--max-replicas=<maximum_replica_count>

    定义最小和最大计算节点限制。集群自动伸缩器不会将机器池节点数量减少或增加到您指定的限制之外。

    如果您使用单个可用区部署了 ROSA,则--min-replicas--max-replicas参数定义该可用区中机器池的自动伸缩限制。如果您使用多个可用区部署集群,则这些参数定义所有可用区中自动伸缩的总限制,并且计数必须是 3 的倍数。

    --instance-type=<instance_type>

    可选:设置机器池中计算节点的实例类型。实例类型定义池中每个计算节点的 vCPU 和内存分配。用实例类型替换<instance_type>。默认为m5.xlarge。创建机器池后,无法更改其实例类型。

    --labels=<key>=<value>,<key>=<value>

    可选:定义机器池的标签。用逗号分隔的键值对列表替换<key>=<value>,<key>=<value>,例如--labels=key1=value1,key2=value2

    --taints=<key>=<value>:<effect>,<key>=<value>:<effect>

    可选:定义机器池的污点。用每个污点的键、值和效果替换<key>=<value>:<effect>,<key>=<value>:<effect>,例如--taints=key1=value1:NoSchedule,key2=value2:NoExecute。可用效果包括NoSchedulePreferNoScheduleNoExecute

    --availability-zone=<availability_zone_name>

    可选:对于多可用区集群,您可以在选择的单可用区中创建机器池。用单可用区名称替换<availability_zone_name>

    --use-spot-instances

    可选:将机器池配置为部署为非保证的 AWS Spot 实例。有关信息,请参阅 AWS 文档中的Amazon EC2 Spot 实例。如果为机器池选择**使用 Amazon EC2 Spot 实例**,则创建机器池后将无法禁用此选项。

    您的 Amazon EC2 Spot 实例可能随时中断。仅当工作负载能够容忍中断时,才使用 Amazon EC2 Spot 实例。

    --spot-max-price=<price>

    可选:如果您选择使用 Spot 实例,则可以使用此参数来定义 Spot 实例的最高小时价格。如果未指定此参数,则使用按需价格。

    以下示例创建一个名为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> --machinepool=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. 验证机器池是否包含在输出中,并且配置符合预期。

配置机器池磁盘卷

可以配置机器池磁盘卷大小以提高灵活性。默认磁盘大小为 300 GiB。

对于 AWS 上的 Red Hat OpenShift 服务 (ROSA)(经典架构)集群版本 4.13 或更早版本,磁盘大小可以配置为最小 128 GiB,最大 1 TiB。对于 4.14 及更高版本,磁盘大小可以配置为最小 128 GiB,最大 16 TiB。

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

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

使用 OpenShift 集群管理器配置机器池磁盘卷

集群创建的先决条件
  • 您可以在集群安装期间选择默认机器池的节点磁盘大小。

集群创建过程
  1. 在 ROSA 集群向导中,导航到“集群设置”。

  2. 导航到机器池步骤。

  3. 选择所需的根磁盘大小

  4. 选择下一步继续创建集群。

机器池创建的先决条件
  • 集群安装后,您可以选择新机器池的节点磁盘大小。

机器池创建过程
  1. 导航到OpenShift集群管理器并选择您的集群。

  2. 导航到机器池选项卡。

  3. 点击添加机器池

  4. 选择所需的根磁盘大小

  5. 选择添加机器池以创建机器池。

使用 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 指定工作节点磁盘大小。值可以是 GB、GiB、TB 或 TiB。将<disk_size>替换为数字值和单位,例如--disk-size=200GiB。您不能将数字和单位分开。不允许使用空格。
  2. 登录 AWS 控制台并查找 EC2 虚拟机根卷大小,以确认新的机器池磁盘卷大小。

其他资源

删除机器池

如果您的工作负载需求发生变化,并且当前的机器池不再满足您的需求,您可以删除机器池。

您可以使用 Red Hat OpenShift 集群管理器或 ROSA CLI (rosa) 删除机器池。

使用 OpenShift 集群管理器删除机器池

您可以使用 Red Hat OpenShift 集群管理器删除 AWS 上 Red Hat OpenShift 服务集群的机器池。

先决条件
  • 您已创建了一个ROSA集群。

  • 集群处于就绪状态。

  • 您拥有一个现有的机器池,该机器池没有任何污点,并且对于单可用区集群至少有两个实例,对于多可用区集群至少有三个实例。

步骤
  1. OpenShift 集群管理器导航到集群列表页面,然后选择包含要删除的机器池的集群。

  2. 在选定的集群上,选择机器池选项卡。

  3. 机器池选项卡下,单击要删除的机器池的选项菜单kebab

  4. 点击删除

    选定的机器池已删除。

使用 ROSA CLI 删除机器池

您可以使用 ROSA CLI 删除 AWS 上 Red Hat OpenShift 服务集群的机器池。

对于 ROSA CLI rosa 1.2.25 及更早版本的用户,无法删除与集群一起创建的机器池 (ID='Default')。对于 ROSA CLI rosa 1.2.26 及更高版本的用户,如果集群中只有一个机器池没有任何污点,并且对于单可用区集群至少有 2 个副本,对于多可用区集群至少有 3 个副本,则可以删除与集群一起创建的机器池 (ID='worker')。

先决条件
  • 您已创建了一个ROSA集群。

  • 集群处于就绪状态。

  • 您拥有一个现有的机器池,该机器池没有任何污点,并且对于单可用区集群至少有两个实例,对于多可用区集群至少有三个实例。

步骤
  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以删除机器池。

    选定的机器池已删除。

手动扩展计算节点

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

您必须分别扩展每个机器池。

先决条件
  • 您已在工作站上安装并配置了最新的 Red Hat OpenShift Service on AWS (ROSA) CLI (rosa)。

  • 您已使用 ROSA CLI (rosa) 登录到您的 Red Hat 帐户。

  • 您已创建 AWS 上的 Red Hat OpenShift 服务 (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 如果您使用单个可用区部署了 AWS 上的 Red Hat OpenShift 服务 (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。

节点标签

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

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

其他资源

向机器池添加节点标签

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

标签被分配为键值对。每个键对于它所分配的对象必须是唯一的。

先决条件
  • 您已在工作站上安装并配置了最新的 Red Hat OpenShift Service on AWS (ROSA) CLI (rosa)。

  • 您已使用 ROSA CLI (rosa) 登录到您的 Red Hat 帐户。

  • 您已创建 AWS 上的 Red Hat OpenShift 服务 (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> \(1)
                              --labels=<key>=<value>,<key>=<value> \(2)
                              <machine_pool_id>
      1 对于使用自动缩放的机器池,您必须提供最小和最大计算节点副本限制。如果您没有指定参数,则在命令完成之前会提示您输入这些值。集群自动缩放器不会将机器池节点计数减少或增加到您指定的限制之外。如果您使用单个可用区部署了 ROSA,则--min-replicas--max-replicas参数定义此可用区机器池中的自动缩放限制。如果您使用多个可用区部署了集群,则这些参数定义了跨所有可用区的总自动缩放限制,并且计数必须是 3 的倍数。
      2 <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> --machinepool=<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. 验证输出中是否包含您的机器池的标签。

向机器池添加标签

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

使用 ROSA CLI 向机器池添加标签

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

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

先决条件
  • 您已在您的工作站上安装并配置了最新的 AWS (aws)、ROSA (rosa) 和 OpenShift (oc) CLI。

  • 您已使用rosa CLI 登录到您的 Red Hat 帐户。

  • 您已创建 AWS 上的 Red Hat OpenShift 服务 (ROSA) 集群。

步骤
  • 通过运行以下命令创建具有自定义标签的机器池:

    $ rosa create machinepools --cluster=<name> --replicas=<replica_count> \
         --name <mp_name> --tags='<key> <value>,<key> <value>' (1)
    1 <key> <value>,<key> <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> --machinepool=<machinepool_name>
    示例输出
    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

向机器池添加污点

您可以为机器池中的计算节点(也称为工作节点)添加污点,以控制哪些 Pod 被调度到它们。当您将污点应用于机器池时,调度程序无法将 Pod 放置到池中的节点上,除非 Pod 规范包含对污点的容忍度。可以使用 Red Hat OpenShift 集群管理器或 Red Hat OpenShift Service on AWS (ROSA) CLI (rosa) 将污点添加到机器池。

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

使用 OpenShift 集群管理器向机器池添加污点

您可以使用 Red Hat OpenShift 集群管理器为您的 Red Hat OpenShift Service on AWS 集群的机器池添加污点。

先决条件
  • 您已创建 AWS 上的 Red Hat OpenShift 服务 (ROSA) 集群。

  • 您有一个现有的机器池,它不包含任何污点并且包含至少两个实例。

步骤
  1. 导航到OpenShift集群管理器并选择您的集群。

  2. 在“机器池”选项卡下,单击您要向其添加污点的机器池的“选项”菜单kebab

  3. 选择“编辑污点”。

  4. 为您的污点添加“键”和“值”条目。

  5. 从下拉菜单中为您的污点选择一个“效果”。可用选项包括NoSchedulePreferNoScheduleNoExecute

  6. 可选:如果您想向机器池添加更多污点,请选择“添加污点”。

  7. 单击“保存”将污点应用于机器池。

验证
  1. 在“机器池”选项卡下,选择机器池旁边的>以展开视图。

  2. 验证您的污点是否在展开视图中的“污点”下列出。

使用 ROSA CLI 向机器池添加污点

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

对于 ROSA CLI `rosa` 1.2.25 及之前的版本用户,无法更改与集群一起创建的机器池 (ID=Default) 中的污点数量。对于 ROSA CLI `rosa` 1.2.26 及更高版本的用户,可以更改与集群一起创建的机器池 (ID=worker) 中的污点数量。对于单 AZ 集群,必须至少有一个机器池没有任何污点,并且至少有两个副本;对于多 AZ 集群,则至少要有三个副本。

先决条件
  • 您已在您的工作站上安装并配置了最新的 AWS (aws)、ROSA (rosa) 和 OpenShift (oc) CLI。

  • 您已使用rosa CLI 登录到您的 Red Hat 帐户。

  • 您已创建 AWS 上的 Red Hat OpenShift 服务 (ROSA) 集群。

  • 您有一个现有的机器池,它不包含任何污点并且包含至少两个实例。

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

    $ rosa list machinepools --cluster=<cluster_name>
  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>,<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> \(1)
                              --taints=<key>=<value>:<effect>,<key>=<value>:<effect> \(2)
                              <machine_pool_id>
      1 对于使用自动缩放的机器池,您必须提供最小和最大计算节点副本限制。如果您没有指定参数,则在命令完成之前会提示您输入这些值。集群自动缩放器不会将机器池节点计数减少或增加到您指定的限制之外。如果您使用单个可用区部署了 ROSA,则--min-replicas--max-replicas参数定义此可用区机器池中的自动缩放限制。如果您使用多个可用区部署了集群,则这些参数定义了跨所有可用区的总自动缩放限制,并且计数必须是 3 的倍数。
      2 <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> --machinepool=<machinepool_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. 验证输出中是否包含您的机器池的污点。