第 3 章 使用自定义 Metrics Autoscaler Operator 自动扩展 pod
3.1. 自定义 Metrics Autoscaler Operator 概述
作为开发者,您可以使用 Custom Metrics Autoscaler Operator for Red Hat OpenShift 指定 OpenShift Container Platform 如何根据不基于 CPU 或内存的自定义指标自动增加或减少部署、有状态集、自定义资源或作业的数量。
Custom Metrics Autoscaler Operator 是一个基于 Kubernetes Event Driven Autoscaler (KEDA) 的可选 Operator,允许使用 pod 指标以外的其他指标源扩展工作负载。
自定义指标自动扩展目前仅支持 Prometheus、CPU、内存和 Apache Kafka 指标。
Custom Metrics Autoscaler Operator 根据特定应用程序的自定义外部指标扩展 pod。您的其他应用程序继续使用其他扩展方法。您可以配置 触发器 (也称为 scaler),这是自定义指标自动扩展器用来决定如何扩展的事件和指标的来源。自定义指标自动扩展使用 metrics API 将外部指标转换为 OpenShift Container Platform 可以使用的形式。自定义指标自动扩展会创建一个执行实际缩放的 pod 横向自动扩展(HPA)。
要使用自定义指标自动扩展,您可以创建一个 ScaledObject
或 ScaledJob
对象,这是定义扩展元数据的自定义资源 (CR)。您可以指定要缩放的部署或作业、要缩放的指标源 (trigger) 以及其他参数,如允许的最小和最大副本数。
您只能为每个您要扩展的工作负载创建一个扩展对象或扩展作业。另外,您不能在同一工作负载中使用扩展的对象或扩展作业以及 pod 横向自动扩展 (HPA)。
自定义指标自动扩展与 HPA 不同,可以缩减为零。如果将自定义指标自动扩展 CR 中的 minReplicaCount
值设置为 0,自定义指标自动扩展会将工作负载从 1 缩减到 0
个副本或从 0 个副本扩展到 1。这称为 激活阶段。扩展至 1 个副本后,HPA 会控制扩展。这称为 扩展阶段。
某些触发器允许您更改由集群指标自动扩展扩展的副本数量。在所有情况下,配置激活阶段的参数始终使用相同的短语,前缀为 激活。例如,如果 threshold
参数配置缩放,则 activationThreshold
将配置激活。通过配置激活和扩展阶段,您可以提高扩展策略的灵活性。例如,您可以配置更高的激活阶段,以便在指标特别低时防止扩展或缩减。
当每个决策不同时,激活值的优先级高于扩展值。例如,如果 threshold
被设置为 10
,并且 activationThreshold
为 50
,如果指标报告 40
,则缩放器不会激活,并且 pod 缩减为零,即使 HPA 需要 4 个实例。
您可以通过查看自定义资源中的 pod 数量或查看自定义 Metrics Autoscaler Operator 日志来验证自动扩展是否已发生:
Successfully set ScaleTarget replica count
Successfully updated ScaleTarget
如果需要,您可以临时暂停工作负载对象的自动扩展。例如,您可以在执行集群维护前暂停自动扩展。