自动缩放仅适用于通过 Google Cloud Marketplace 和 Red Hat Marketplace 购买的集群。 |
可以将自动缩放器选项配置为自动缩放集群中的机器数量。
当由于资源不足而导致 Pod 无法在任何当前节点上调度,或者需要另一个节点来满足部署需求时,集群自动缩放器会增加集群的大小。集群自动缩放器不会将集群资源增加到您指定的限制之外。
此外,当某些节点在相当长的一段时间内始终不需要时,例如资源使用率低且所有重要 Pod 都可以容纳在其他节点上时,集群自动缩放器会减小集群的大小。
启用自动缩放时,还必须设置最小和最大工作节点数。
只有集群所有者和组织管理员才能缩放或删除集群。 |
可以通过编辑现有集群的机器池定义来启用工作节点上的自动缩放,以增加或减少可用节点的数量。
从 OpenShift 集群管理器控制台在机器池定义中启用工作节点的自动缩放。
从 OpenShift 集群管理器 导航到“集群列表”页面,然后选择要为其启用自动缩放的集群。
在选定的集群中,选择“机器池”选项卡。
单击要为其启用自动缩放的机器池末尾的选项菜单 并选择“编辑”。
在“编辑机器池”对话框中,选中“启用自动缩放”复选框。
选择“保存”以保存这些更改并为机器池启用自动缩放。
可以通过编辑现有集群的机器池定义来禁用工作节点上的自动缩放,以增加或减少可用节点的数量。
可以使用 OpenShift 集群管理器控制台禁用集群上的自动缩放。
从 OpenShift 集群管理器禁用机器池定义中的工作节点自动缩放。
从 OpenShift 集群管理器 导航到“集群列表”页面,然后选择必须禁用自动缩放的集群。
在选定的集群中,选择“机器池”选项卡。
点击机器池末尾的选项菜单(带有自动缩放功能),然后选择**编辑**。
在**编辑机器池**对话框中,取消选中**启用自动缩放**复选框。
选择**保存**以保存这些更改并禁用机器池的自动缩放功能。
将自动缩放应用于 OpenShift Dedicated 集群涉及部署集群自动缩放器,然后为集群中的每种机器类型部署机器自动缩放器。
只有在 Machine API 可运行的集群中才能配置集群自动缩放器。 |
集群自动缩放器会调整 OpenShift Dedicated 集群的大小以满足其当前的部署需求。它使用声明性的、Kubernetes 风格的参数来提供不依赖于特定云提供商对象的 IaaS 管理。集群自动缩放器具有集群范围,并且不与特定命名空间关联。
当由于资源不足而导致 Pod 无法调度到任何当前工作节点上,或者需要另一个节点来满足部署需求时,集群自动缩放器会增加集群的大小。集群自动缩放器不会将集群资源增加到您指定的限制之外。
集群自动缩放器计算集群中所有节点的总内存和 CPU,即使它不管理控制平面节点。这些值不是面向单机的。它们是整个集群中所有资源的聚合。例如,如果您设置了最大内存资源限制,则集群自动缩放器在计算当前内存使用率时会包含集群中的所有节点。然后,该计算用于确定集群自动缩放器是否有能力添加更多工作节点资源。
确保您创建的 `ClusterAutoscaler` 资源定义中的 `maxNodesTotal` 值足够大,以满足集群中可能的机器总数。此值必须包含控制平面机器的数量以及您可能扩展到的计算机器的数量。 |
每 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 的节点可能会被删除以释放资源。