4.2. 管理计算节点
本文档论述了如何通过 Red Hat OpenShift Service on AWS (ROSA) 管理计算(也称为 worker)节点。
机器池中配置了计算节点的大部分更改。机器池是集群中有相同配置的计算节点的一组计算节点,提供轻松管理。
您可以编辑机器池配置选项,如扩展、添加节点标签和添加污点。
4.2.1. 创建机器池
在安装 Red Hat OpenShift Service on AWS (ROSA)集群时会创建一个机器池。安装后,您可以使用 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 集群。
流程
- 进入到 OpenShift Cluster Manager 并选择您的集群。
- 在 Machine pool 选项卡下,点 Add machine pool。
- 添加机器池名称。
从下拉菜单中选择 Compute 节点实例类型。实例类型定义机器池中各个计算节点的 vCPU 和内存分配。
注意在创建池后,您无法更改机器池的实例类型。
可选:为机器池配置自动扩展:
- 选择 Enable autoscaling 以自动扩展机器池中的机器数量,以满足部署需求。
设置自动扩展的最小和最大节点数限值。集群自动扩展不会减少或增加机器池节点数超过您指定的限制。
- 如果您使用一个可用区部署集群,请设置最小和最大节点数。这会在可用区中定义最小和最大计算节点限值。
如果您使用多个可用区部署集群,请为每个区设置 Minimum nodes per zone 和 Maximum nodes per zone。它定义每个区的最小和最大计算节点限值。
注意另外,您可以在创建机器池后为机器池设置自动扩展首选项。
如果没有启用自动扩展,请选择计算节点计数:
- 如果您使用一个可用区部署集群,请从下拉菜单中选择 Compute 节点数。这定义了置备到区域的机器池的计算节点数量。
- 如果您使用多个可用区部署集群,请从下拉菜单中选择 Compute 节点数(每个区域)。这定义了每个区要置备到机器池的计算节点数量。
- 可选:配置 根磁盘大小。
可选:为您的机器池添加节点标签和污点:
- 展开 Edit node labels and taints 菜单。
- 在 Node labels 下,为您的节点标签添加 Key 和 Value 项。
在 Taints 下,为您的污点添加 Key 和 Value 条目。
注意只有集群已至少有一个没有污点的机器池时,才能创建带有污点的机器池。
对于每个污点,从下拉菜单中选择 Effect。可用选项包括
NoSchedule
、PreferNoSchedule
和NoExecute
。注意另外,您可以在创建机器池后添加节点标签和污点。
- 可选:选择用于此机器池中节点的附加自定义安全组。您必须已创建了安全组,并将其与您为这个集群选择的 VPC 关联。您无法在创建机器池后添加或编辑安全组。如需更多信息,请参阅"添加资源"部分中的安全组的要求。
可选:如果要配置机器池将机器部署为非保障的 AWS Spot 实例,请使用 Amazon EC2 Spot 实例:
- 选择 使用 Amazon EC2 Spot 实例。
选择 Use On-Demand 实例价格 即可使用按需实例价格。或者,选择 Set maximum price 来为 Spot 实例定义最大每小时价格。
有关 Amazon EC2 Spot 实例的更多信息,请参阅 AWS 文档。
重要您的 Amazon EC2 Spot 实例可能随时中断。仅对可容许中断的工作负载使用 Amazon EC2 Spot 实例。
注意如果为机器池选择了使用 Amazon EC2 Spot 实例,则在创建机器池后无法禁用该选项。
- 点 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> \ --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 替换 Replace
<key>=<value>:<effect>,<key>=<value>:<effect>
,例如--taints=key1=value1:NoSchedule,key2=value2:NoExecute
。可用效果包括NoSchedule
、PreferNoSchedule
和NoExecute
。 --use-spot-instances
- 可选:配置机器池以将机器部署为非保障的 AWS Spot 实例。如需更多信息,请参阅 AWS 文档中的 Amazon EC2 Spot 实例。如果为机器池选择了使用 Amazon EC2 Spot 实例,则在创建机器池后无法禁用该选项。
--spot-max-price=<price>
可选:如果选择使用 Spot 实例,您可以指定此参数来为 Spot 实例定义最大每小时价格。如果没有指定这个参数,则使用 on-demand 价格。
重要您的 Amazon EC2 Spot 实例可能随时中断。仅对可容许中断的工作负载使用 Amazon EC2 Spot 实例。
--disk-size=<disk_size>
-
可选:指定 worker 节点磁盘大小。该值可以是 GB、GiB、TB 或 TiB。将
<disk_size
> 替换为数字值和单位,如--disk-size=200GiB
。 --availability-zone=<availability_zone_name>
可选: 对于 Multi-AZ 集群,您可以在您选择的 Single-AZ 中创建机器池。将
<availability_zone_name&
gt; 替换为 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 等。
--additional-security-group-ids <sec_group_id>
- 可选: 对于没有红帽受管 VPC 的集群中的机器池,您可以选择在机器池中使用的额外自定义安全组。您必须已创建了安全组,并将其与您为这个集群选择的 VPC 关联。您无法在创建机器池后添加或编辑安全组。如需更多信息,请参阅"添加资源"部分中的安全组的要求。
--subnet <subnet_id>
可选: 对于 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> \ --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> and
--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 替换 Replace
<key>=<value>:<effect>,<key>=<value>:<effect>
,例如--taints=key1=value1:NoSchedule,key2=value2:NoExecute
。可用效果包括NoSchedule
、PreferNoSchedule
和NoExecute
。 --availability-zone=<availability_zone_name>
-
可选: 对于 Multi-AZ 集群,您可以在您选择的 Single-AZ 中创建机器池。将
<availability_zone_name&
gt; 替换为 Single-AZ 名称。 --use-spot-instances
可选:配置机器池以将机器部署为非保障的 AWS Spot 实例。如需更多信息,请参阅 AWS 文档中的 Amazon EC2 Spot 实例。如果为机器池选择了使用 Amazon EC2 Spot 实例,则在创建机器池后无法禁用该选项。
重要您的 Amazon EC2 Spot 实例可能随时中断。仅对可容许中断的工作负载使用 Amazon EC2 Spot 实例。
--spot-max-price=<price>
- 可选:如果选择使用 Spot 实例,您可以指定此参数来为 Spot 实例定义最大每小时价格。如果没有指定这个参数,则使用 on-demand 价格。
以下示例创建一个名为
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'
验证
您可以列出集群中的所有机器池,或描述单独的机器池。
列出集群中的可用机器池:
$ 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
描述集群中特定机器池的信息:
$ 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:
- 验证机器池已包含在输出中,并且配置符合预期。
其他资源
4.2.2. 配置机器池磁盘卷
可以配置机器池磁盘大小以提供额外的灵活性。默认磁盘大小为 300 GiB。
对于 Red Hat OpenShift Service on AWS (ROSA) (经典架构)集群版本 4.13 或更早版本,磁盘大小可以从最小 128 GiB 配置为最多 1 TiB。对于版本 4.14 及更高版本,磁盘大小可以配置为至少 128 GiB 到最多 16 TiB。
您可以使用 OpenShift Cluster Manager 或 ROSA CLI (rosa
)为集群配置机器池磁盘大小。
现有集群和机器池节点卷无法调整大小。
4.2.2.1. 使用 OpenShift Cluster Manager 配置机器池磁盘卷
集群创建的先决条件
- 您可以选择在集群安装过程中为默认机器池选择节点磁盘大小。
集群创建的步骤
- 从 ROSA 集群向导中,进入到 Cluster settings。
- 导航到 Machine pool 步骤。
- 选择所需的 Root 磁盘大小。
- 选择 Next 以继续创建集群。
机器池创建的先决条件
- 您可以选择安装集群后为新机器池选择节点磁盘大小。
机器池创建的步骤
- 进入到 OpenShift Cluster Manager 并选择您的集群。
- 导航到 Machine pool 选项卡。
- 点 Add machine pool。
- 选择所需的 Root 磁盘大小。
- 选择 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
。您不能分隔数字和单位。不允许使用空格。
机器池创建的先决条件
- 您可以选择安装集群后为新机器池选择根磁盘大小。
机器池创建的步骤
执行以下命令来扩展集群:
$ rosa create machinepool --cluster=<cluster_id> \1 --disk-size=<disk_size> 2
- 登录到 AWS 控制台并找到 EC2 虚拟机根卷大小,以确认新的机器池磁盘大小。
其他资源
-
如需可用于
rosa create machinepool
子命令的参数的详细列表,请参阅使用 ROSA CLI 管理对象。
4.2.3. 删除机器池
如果您的工作负载要求已更改,当前机器池已不再满足您的需要,则可以删除机器池。
您可以使用 Red Hat OpenShift Cluster Manager 或 ROSA CLI (rosa
)删除机器池。
4.2.3.1. 使用 OpenShift Cluster Manager 删除机器池
您可以使用 Red Hat OpenShift Cluster Manager 删除 Red Hat OpenShift Service on AWS 集群的机器池。
前提条件
- 您创建了 ROSA 集群。
- 集群处于 ready 状态。
- 您有一个没有污点的机器池,至少有两个用于单个 AZ 集群或用于多个 AZ 集群的三个实例。
流程
- 在 OpenShift Cluster Manager 中,导航到 Cluster List 页面,再选择包含您要删除的机器池的集群。
- 在所选集群中,选择 Machine pool 选项卡。
- 在 Machine pool 选项卡中,点您要删除的机器池的选项菜单 。
点击 Delete。
所选机器池已删除。
4.2.3.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')。
前提条件
- 您创建了 ROSA 集群。
- 集群处于 ready 状态。
- 您有一个没有污点的现有机器池,至少有两个用于 Single-AZ 集群或 Multi-AZ 集群的实例。
流程
在 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)
输入
y
删除机器池。所选机器池已删除。
4.2.4. 手动扩展计算节点
如果您还没有为机器池启用自动扩展,您可以手动扩展池中计算(也称为 worker)节点的数量来满足部署需求。
您必须单独扩展每个机器池。
前提条件
-
在您的工作站上安装和配置了最新的 Red Hat OpenShift Service on AWS (ROSA) CLI
rosa
。 -
您可以使用 ROSA CLI (
rosa
)登录到您的红帽帐户。 - 创建一个 Red Hat OpenShift Service on AWS (ROSA) 集群。
- 您有一个现有的机器池。
流程
列出集群中的机器池:
$ 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
增加或减少机器池中的计算节点副本数量:
$ rosa edit machinepool --cluster=<cluster_name> \ --replicas=<replica_count> \1 <machine_pool_id> 2
验证
列出集群中可用的机器池:
$ 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
-
在上一命令的输出中,验证机器池的计算节点副本数是否如预期。在示例输出中,
mp1
机器池的计算节点副本数已扩展到 3。
4.2.5. 节点标签
标签是应用于 Node
对象的键值对。您可以使用标签来组织一组对象,并控制 pod 的调度。
您可以在集群创建过程中或之后添加标签。标签可以随时修改或更新。
其他资源
- 有关标签的更多信息,请参阅 Kubernetes 标签和选择器概述。
4.2.5.1. 在机器池中添加节点标签
随时为计算(也称为 worker)节点添加或编辑标签,以便以与您的相关方式管理节点。例如,您可以将工作负载的类型分配给特定的节点。
标签以一个键值对的形式进行分配。对于其分配到的对象,每个键需要是唯一的。
前提条件
-
在您的工作站上安装和配置了最新的 Red Hat OpenShift Service on AWS (ROSA) CLI
rosa
。 -
您可以使用 ROSA CLI (
rosa
)登录到您的红帽帐户。 - 创建一个 Red Hat OpenShift Service on AWS (ROSA) 集群。
- 您有一个现有的机器池。
流程
列出集群中的机器池:
$ 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
为机器池添加或更新节点标签:
要为不使用自动扩展的机器池添加或更新节点标签,请运行以下命令:
$ rosa edit machinepool --cluster=<cluster_name> \ --replicas=<replica_count> \1 --labels=<key>=<value>,<key>=<value> \2 <machine_pool_id>
以下示例将标签添加到
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'
验证
使用新标签描述机器池的详情:
$ 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:
- 验证您的机器池在输出中是否包含这些标签。
4.2.6. 为机器池添加标签
您可以在机器池中为计算节点添加标签(也称为 worker 节点),为置备机器池时生成的 AWS 资源引入自定义用户标签。
4.2.6.1. 使用 ROSA CLI 为机器池添加标签
您可以使用 ROSA 命令行界面(CLI)向 Red Hat OpenShift Service on AWS 集群的机器池添加标签。
您必须确保标签键不是 aws
、red-hat-managed
、red-hat-clustertype
或 Name
。另外,您不能设置以 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>
; <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
4.2.7. 为机器池添加污点
您可以为机器池中的计算(也称为 worker)节点添加污点,以控制哪些 pod 调度到它们。将污点应用到机器池时,调度程序无法将 pod 放置到池中节点上,除非 pod 规格包含污点的容限。可以使用 Red Hat OpenShift Cluster Manager 或 Red Hat OpenShift Service on AWS (ROSA) CLI 将污点添加到机器池中。
集群必须至少有一个不包含任何污点的机器池。
4.2.7.1. 使用 OpenShift Cluster Manager 为机器池添加污点
您可以使用 Red Hat OpenShift Cluster Manager 为 Red Hat OpenShift Service on AWS 集群添加污点。
前提条件
- 创建一个 Red Hat OpenShift Service on AWS (ROSA) 集群。
- 您有一个现有的机器池,它不包含任何污点,至少包含两个实例。
流程
- 进入到 OpenShift Cluster Manager 并选择您的集群。
- 在 Machine pool 选项卡中,点您要向其添加污点的机器池的选项菜单 。
- 选择 Edit taint。
- 为您的污点添加 Key 和 Value 条目。
-
从下拉菜单中选择污点的 Effect。可用选项包括
NoSchedule
、PreferNoSchedule
和NoExecute
。 - 可选: 如果要向机器池添加更多污点,请选择 Add taint。
- 点 Save 将污点应用到机器池。
验证
- 在 Machine pool 选项卡中,选择机器池旁边的 > 来扩展视图。
- 验证您的污点是否在展开的视图中的 Taints 下列出。
4.2.7.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
)。必须至少有一个没有污点的机器池,以及 Single-AZ 集群至少有两个副本,或 Multi-AZ 集群的三个副本。
前提条件
-
在您的工作站上安装和配置了最新的 AWS (
aws
)、ROSA (rosa
) 和 OpenShift (oc
) CLI。 -
您可以使用
rosa
CLI 登录到您的红帽帐户。 - 创建一个 Red Hat OpenShift Service on AWS (ROSA) 集群。
- 您有一个现有的机器池,它不包含任何污点,至少包含两个实例。
流程
运行以下命令列出集群中的机器池:
$ rosa list machinepools --cluster=<cluster_name>
为机器池添加或更新污点:
要为不使用自动扩展的机器池添加或更新污点,请运行以下命令:
$ 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
。可用效果包括NoSchedule
、PreferNoSchedule
和NoExecute
。此列表会持续覆盖对节点污点所做的任何修改。
以下示例将污点添加到
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
。可用效果包括NoSchedule
、PreferNoSchedule
和NoExecute
。此列表会持续覆盖对节点污点所做的任何修改。
以下示例将污点添加到
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'
验证
描述带有新污点的机器池的详情:
$ 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:
- 验证您的机器池是否包含在输出中。