3.2. 自定义 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)。

要使用自定义指标自动扩展,您可以为工作负载创建一个 ScaledObjectScaledJob 对象,这是定义扩展元数据的自定义资源(CR)。您可以指定要缩放的部署或作业、要缩放的指标源 (trigger) 以及其他参数,如允许的最小和最大副本数。

注意

您只能为每个您要扩展的工作负载创建一个扩展对象或扩展作业。另外,您不能在同一工作负载中使用扩展的对象或扩展作业以及 pod 横向自动扩展 (HPA)。

自定义指标自动扩展与 HPA 不同,可以缩减为零。如果将自定义指标自动扩展 CR 中的 minReplicaCount 值设置为 0,自定义指标自动扩展会将工作负载从 1 缩减到 0 个副本或从 0 个副本扩展到 1。这称为 激活阶段。扩展至 1 个副本后,HPA 会控制扩展。这称为 扩展阶段

某些触发器允许您更改由集群指标自动扩展扩展的副本数量。在所有情况下,配置激活阶段的参数始终使用相同的短语,前缀为 激活。例如,如果 threshold 参数配置缩放,则 activationThreshold 将配置激活。通过配置激活和扩展阶段,您可以提高扩展策略的灵活性。例如,您可以配置更高的激活阶段,以便在指标特别低时防止扩展或缩减。

当每个决策不同时,激活值的优先级高于扩展值。例如,如果 threshold 被设置为 10,并且 activationThreshold50,如果指标报告 40,则缩放器不会激活,并且 pod 缩减为零,即使 HPA 需要 4 个实例。

图 3.1. 自定义指标自动扩展工作流

自定义指标自动扩展工作流
  1. 您可以为集群中的工作负载创建或修改扩展对象自定义资源。对象包含该工作负载的扩展配置。在接受新对象前,OpenShift API 服务器将其发送到自定义指标自动扩展准入 webhook 进程,以确保对象有效。如果验证成功,API 服务器会保留对象。
  2. 自定义指标自动扩展控制器监视是否有新的或修改的扩展对象。当 OpenShift API 服务器通知更改控制器时,控制器会监控任何外部触发器源(也称为数据源)在对象中指定以更改指标数据。一个或多个 scalers 请求从外部触发器源扩展数据。例如,对于 Kafka 触发器类型,控制器使用 Kafka scaler 与 Kafka 实例通信来获取触发器请求的数据。
  3. 控制器为扩展的对象创建一个 pod 横向自动扩展对象。因此,Horizontal Pod Autoscaler (HPA) Operator 开始监控与触发器关联的扩展数据。HPA 请求从集群 OpenShift API 服务器端点扩展数据。
  4. OpenShift API 服务器端点由自定义指标自动扩展指标适配器提供。当 metrics 适配器收到自定义指标的请求时,它使用 GRPC 连接控制器来请求它以获取从 scaler 接收的最新触发器数据。
  5. HPA 根据从 metrics adapter 接收的数据做出缩放决策,并通过增加或减少副本来扩展工作负载。
  6. 当它运行时,工作负载可能会影响扩展指标。例如,如果扩展工作负载以处理 Kafka 队列中的工作,则队列大小会在工作负载处理所有工作后减小。因此,工作负载会缩减。
  7. 如果指标位于 minReplicaCount 值指定的范围内,自定义指标自动扩展控制器会禁用所有扩展,并将副本数保留为固定级别。如果指标超过该范围,自定义指标自动扩展控制器将启用扩展并允许 HPA 扩展工作负载。当禁用扩展时,HPA 不会执行任何操作。