$ rosa create cluster --cluster-name <cluster_name> --enable-autoscaling --interactive
将自动伸缩应用于AWS上的Red Hat OpenShift服务集群涉及配置集群自动伸缩器,然后为集群中的至少一个机器池配置机器自动伸缩器。
您只能在机器API可运行的集群中配置集群自动伸缩器。 每个集群只能创建一个集群自动伸缩器。 |
集群自动伸缩器会调整AWS上Red Hat OpenShift服务集群的大小,以满足其当前的部署需求。它使用声明性的、Kubernetes风格的参数来提供不依赖于特定云提供商对象的 基础设施管理。集群自动伸缩器具有集群范围,并且不与特定的命名空间关联。
当由于资源不足或需要另一个节点来满足部署需求而导致 Pod 无法调度到任何当前工作节点上时,集群自动伸缩器会增加集群的大小。集群自动伸缩器不会将集群资源增加到您指定的限制之外。
集群自动伸缩器计算集群中所有节点上的总内存和CPU,即使它不管理控制平面节点。这些值不是面向单机的。它们是整个集群中所有资源的聚合。例如,如果您设置了最大内存资源限制,则集群自动伸缩器在计算当前内存使用情况时会包含集群中的所有节点。然后,该计算用于确定集群自动伸缩器是否有能力添加更多工作程序资源。
确保您创建的 |
每10秒,集群自动伸缩器会检查集群中哪些节点是不必要的,并将其移除。如果满足以下条件,集群自动伸缩器会考虑移除节点
节点利用率低于集群的*节点利用率级别*阈值。节点利用率级别是节点请求资源之和除以节点分配资源的结果。如果您没有在ClusterAutoscaler
自定义资源中指定值,则集群自动伸缩器将使用默认值0.5
,对应于50%的利用率。
集群自动伸缩器可以将运行在节点上的所有Pod移动到其他节点。Kubernetes调度程序负责将Pod调度到节点上。
集群自动伸缩器未禁用缩减功能注释。
如果节点上存在以下类型的Pod,集群自动伸缩器将不会移除该节点
具有限制性Pod中断预算 (PDB) 的Pod。
默认情况下不在节点上运行的kube-system Pod。
没有PDB或PDB过于严格的kube-system Pod。
不受控制器对象(如部署、副本集或有状态集)支持的Pod。
具有本地存储的Pod。
由于资源不足、不兼容的节点选择器或亲和性、匹配的反亲和性等原因而无法移动到其他位置的Pod。
除非它们也具有"cluster-autoscaler.kubernetes.io/safe-to-evict": "true"
注释,否则具有"cluster-autoscaler.kubernetes.io/safe-to-evict": "false"
注释的Pod。
例如,您将最大CPU限制设置为64个核心,并将集群自动伸缩器配置为仅创建每个具有8个核心的机器。如果您的集群以30个核心启动,则集群自动伸缩器最多可以添加4个具有32个核心的节点,总共62个。
如果您配置了集群自动伸缩器,则会应用其他使用限制
不要直接修改自动伸缩节点组中的节点。同一节点组中的所有节点具有相同的容量和标签,并运行相同的系统Pod。
指定Pod的请求。
如果您必须防止Pod过快删除,请配置合适的PDB。
确认您的云提供商配额足够大,可以支持您配置的最大节点池。
不要运行其他节点组自动伸缩器,尤其是云提供商提供的那些。
只有在这样做会导致可调度的Pod时,集群自动伸缩器才会在自动伸缩节点组中添加节点。如果可用的节点类型无法满足Pod请求的要求,或者可以满足这些要求的节点组已达到其最大大小,则集群自动伸缩器无法向上扩展。 |
水平 Pod 自动伸缩器 (HPA) 和集群自动伸缩器修改集群资源的方式不同。HPA 根据当前 CPU 负载更改部署或副本集的副本数量。如果负载增加,HPA 会创建新的副本,而不管集群有多少可用资源。如果没有足够的资源,集群自动伸缩器会添加资源,以便 HPA 创建的 Pod 可以运行。如果负载减少,HPA 会停止一些副本。如果此操作导致某些节点利用率不足或完全空闲,则集群自动伸缩器会删除不必要的节点。
集群自动伸缩器会考虑 Pod 优先级。Pod 优先级和抢占功能允许在集群资源不足的情况下根据优先级调度 Pod,但集群自动伸缩器确保集群拥有运行所有 Pod 的资源。为了尊重这两个功能的意图,集群自动伸缩器包含一个优先级截止函数。您可以使用此截止值来调度“尽力而为”的 Pod,这些 Pod 不会导致集群自动伸缩器增加资源,而只在有空闲资源时运行。
优先级低于截止值的 Pod 不会导致集群向上扩展,也不会阻止集群向下扩展。不会添加新的节点来运行这些 Pod,并且运行这些 Pod 的节点可能会被删除以释放资源。
您可以使用 OpenShift 集群管理器在集群创建期间启用自动伸缩。
在集群创建期间,选中“**启用自动伸缩**”框。“**编辑集群自动伸缩设置**”按钮将可选择。
您还可以选择自动伸缩的节点最小或最大数量。
单击“**编辑集群自动伸缩设置**”。
编辑您想要的任何设置,然后单击“**关闭**”。
您可以使用 OpenShift 集群管理器在集群创建后启用自动伸缩。
在 OpenShift 集群管理器中,单击要自动伸缩的集群的名称。集群的概述页面上有一个“**自动伸缩**”项目,指示其是启用还是禁用。
单击“**机器池**”选项卡。
单击“**编辑集群自动伸缩**”按钮。将显示“**编辑集群自动伸缩**”设置窗口。
单击窗口顶部的“**自动伸缩集群**”切换开关。现在所有设置都可编辑。
编辑您想要的任何设置,然后单击“**保存**”。
单击屏幕右上角的“**x**”关闭设置窗口。
如果已更改所有自动伸缩设置,要将其恢复为默认值,请单击“**全部恢复为默认值**”按钮。
这些表解释了使用 OpenShift 集群管理器进行集群自动伸缩时所有可配置的 UI 设置。
设置 | 描述 | 类型或范围 | 默认值 |
---|---|---|---|
|
设置自动伸缩器日志级别。默认值为 1。建议将级别 4 用于调试。级别 6 启用几乎所有内容。 |
|
1 |
|
如果为 |
|
true |
|
在缩减规模之前,为 Pod 提供以秒为单位的优雅终止时间。 |
|
600 |
|
集群自动伸缩器等待节点准备就绪的最长时间。 |
|
15m |
|
允许用户调度“尽力而为”的 Pod,这些 Pod 不应触发集群自动伸缩器操作。这些 Pod 仅在有空闲资源时运行。 |
|
-10 |
|
确定集群自动伸缩器在计算缩减规模的资源利用率时是否忽略守护程序集 Pod。 |
|
false |
|
如果为 |
|
false |
|
此选项指定集群自动伸缩器在考虑节点组相似性时应忽略的标签。此选项不能包含空格。 |
|
格式应为用逗号分隔的标签列表。 |
设置 | 描述 | 类型或范围 | 默认值 |
---|---|---|---|
|
集群中的核心数最小值。集群自动伸缩器不会将集群缩小到小于此数字。 |
|
0 |
|
集群中的核心数最大值。集群自动伸缩器不会将集群扩展到大于此数字。 |
|
180 * 64 (11520) |
|
集群中内存的最小千兆字节数。集群自动伸缩器不会将集群缩小到小于此数字。 |
|
0 |
|
集群中内存的最大千兆字节数。集群自动伸缩器不会将集群扩展到大于此数字。 |
|
180 * 64 * 20 (230400) |
|
所有节点组中的节点最大数量。包括所有节点,而不仅仅是自动缩放的节点。集群自动伸缩器不会将集群扩展到大于此数字。 |
|
180 |
GPU |
集群中不同 GPU 的最小和最大数量。集群自动伸缩器不会将集群缩小到小于或扩展到大于这些数字。 |
|
格式应为用逗号分隔的“<gpu_type>:<min>:<max>”列表。 |
设置 | 描述 | 类型或范围 | 默认值 |
---|---|---|---|
|
集群自动伸缩器是否应缩减集群规模。 |
|
true |
|
节点利用率级别,定义为请求的资源总和除以容量,低于此级别,可以考虑将节点缩减规模。 |
|
0.5 |
|
节点在符合缩减规模条件之前应处于不需要状态的时长。 |
|
10m |
|
向上扩展后恢复缩减规模评估的时长。 |
|
10m |
|
节点删除后恢复缩减规模评估的时长。 |
|
0s |
|
缩减规模失败后恢复缩减规模评估的时长。 |
|
3m |
如果可用,您可以使用终端的交互模式在集群创建期间设置集群范围的自动伸缩行为。
交互模式提供有关可用可配置参数的更多信息。交互模式还会进行基本的检查和预检验证,这意味着如果提供的数值无效,则终端会提示输入有效数值。
在集群创建期间,使用--enable-autoscaling
和--interactive
参数启用集群自动伸缩。
$ rosa create cluster --cluster-name <cluster_name> --enable-autoscaling --interactive
如果您的集群名称超过 15 个字符,它将在 要自定义子域,请使用 |
当出现以下提示时,输入y以浏览所有可用的自动伸缩选项。
? Configure cluster-autoscaler (optional): [? for help] (y/N) y <enter>
您可以使用 ROSA CLI (rosa
) 在集群创建期间设置集群范围的自动伸缩行为。您可以为整个机器启用自动伸缩器,也可以仅为集群启用。
在集群创建期间,在集群名称后输入--enable autoscaling
以启用机器自动伸缩。
如果您的集群名称超过 15 个字符,它将在 要自定义子域,请使用 |
$ rosa create cluster --cluster-name <cluster_name> --enable-autoscaling
运行以下命令,至少设置一个参数以启用集群自动伸缩:
$ rosa create cluster --cluster-name <cluster_name> --enable-autoscaling <parameter>
以下过程仅支持 ROSA Classic 集群。要为使用 HCP 集群的 ROSA 启用集群创建后的自动伸缩,请参阅 在集群上启用自动伸缩节点。 |
您可以使用 ROSA CLI (rosa
) 在集群创建后设置集群范围的自动伸缩。
创建集群后,创建自动伸缩器。
$ rosa create autoscaler --cluster=<mycluster>
您也可以使用以下命令创建具有特定参数的自动伸缩器:
$ rosa create autoscaler --cluster=<mycluster> <parameter>
使用 ROSA CLI (rosa
) 时,您可以将以下参数添加到集群创建命令以配置自动伸缩器参数。
设置 | 描述 | 类型或范围 | 示例/说明 |
---|---|---|---|
|
识别具有相同实例类型和标签集的节点组,并尝试平衡这些节点组的各自大小。 |
|
将其添加到设置为 true,省略该选项以设置为 false。 |
|
如果设置,集群自动伸缩器不会删除具有使用本地存储的 Pod 的节点,例如 EmptyDir 或 HostPath。 |
|
将其添加到设置为 true,省略该选项以设置为 false。 |
|
自动伸缩器日志级别。将命令中的 int 替换为您要使用的数字。 |
|
|
|
在缩减规模之前,为 Pod 提供优雅终止时间,以秒为单位。将命令中的 int 替换为您要使用的秒数。 |
|
|
|
Pod 必须超过的优先级,才能使集群自动伸缩器部署更多节点。将命令中的 int 替换为您要使用的数字,可以为负数。 |
|
|
|
集群中不同 GPU 的最小和最大数量。集群自动伸缩器不会将集群缩放到小于或大于这些数字的规模。格式必须是逗号分隔的列表“<gpu_type>,<min>,<max>” 。 |
|
|
|
如果设置,集群自动伸缩器在计算缩减规模的资源利用率时会忽略 DaemonSet Pod。 |
|
将其添加到设置为 true,省略该选项以设置为 false。 |
|
集群自动伸缩器等待节点准备就绪的最长时间。将命令中的 string 替换为整数和时间单位 (ns,us,µs,ms,s,m,h)。 |
|
|
|
集群自动伸缩器在比较节点组的相似性时应忽略的标签键的逗号分隔列表。将 strings 替换为相关的标签。 |
|
|
|
集群中节点的最大数量,包括自动伸缩的节点。将命令中的 int 替换为您要使用的数字。 |
|
|
|
要在集群中部署的最小核心数。将命令中的 int 替换为您要使用的数字。 |
|
|
|
要在集群中部署的最大核心数。将命令中的 int 替换为您要使用的数字。 |
|
|
|
集群中的最小内存量(以 GiB 为单位)。将命令中的 int 替换为您要使用的数字。 |
|
|
|
集群中的最大内存量(以 GiB 为单位)。将命令中的 int 替换为您要使用的数字。 |
|
|
|
如果设置,集群自动伸缩器应缩减集群规模。 |
|
将其添加到设置为 true,省略该选项以设置为 false。 |
|
节点在符合缩减规模条件之前应不需要多长时间。将命令中的 string 替换为整数和时间单位 (ns,us,µs,ms,s,m,h)。 |
|
|
|
节点利用率级别,定义为请求资源之和除以容量,低于此级别,可以考虑将节点缩减规模。值必须介于 0 和 1 之间。 |
|
|
|
增加规模后,缩减规模评估恢复多长时间。将命令中的 string 替换为整数和时间单位 (ns,us,µs,ms,s,m,h)。 |
|
|
|
删除节点后,缩减规模评估恢复多长时间。将命令中的 string 替换为整数和时间单位 (ns,us,µs,ms,s,m,h)。 |
|
|
|
缩减规模失败后,缩减规模评估恢复多长时间。将命令中的 string 替换为整数和时间单位 (ns,us,µs,ms,s,m,h)。 |
|
|