3.2. 自定义 Metrics Autoscaler Operator 概述
作为开发者,您可以使用 Custom Metrics Autoscaler Operator for Red Hat OpenShift 指定 Red Hat OpenShift Service on AWS 如何根据不基于 CPU 或内存的自定义指标自动增加或减少部署、有状态集、自定义资源或作业的数量。
Custom Metrics Autoscaler Operator 是一个基于 Kubernetes Event Driven Autoscaler (KEDA) 的可选 Operator,允许使用 pod 指标以外的其他指标源扩展工作负载。
自定义指标自动扩展目前仅支持 Prometheus、CPU、内存和 Apache Kafka 指标。
Custom Metrics Autoscaler Operator 根据特定应用程序的自定义外部指标扩展 pod。您的其他应用程序继续使用其他扩展方法。您可以配置 触发器 (也称为 scaler),这是自定义指标自动扩展器用来决定如何扩展的事件和指标的来源。自定义指标自动扩展使用 metrics API 将外部指标转换为 Red Hat OpenShift Service on AWS 可以使用的形式。自定义指标自动扩展会创建一个执行实际缩放的 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 个实例。
图 3.1. 自定义指标自动扩展工作流
- 您可以为集群中的工作负载创建或修改扩展对象自定义资源。对象包含该工作负载的扩展配置。在接受新对象前,OpenShift API 服务器将其发送到自定义指标自动扩展准入 webhook 进程,以确保对象有效。如果验证成功,API 服务器会保留对象。
- 自定义指标自动扩展控制器监视是否有新的或修改的扩展对象。当 OpenShift API 服务器通知更改控制器时,控制器会监控任何外部触发器源(也称为数据源)在对象中指定以更改指标数据。一个或多个 scalers 请求从外部触发器源扩展数据。例如,对于 Kafka 触发器类型,控制器使用 Kafka scaler 与 Kafka 实例通信来获取触发器请求的数据。
- 控制器为扩展的对象创建一个 pod 横向自动扩展对象。因此,Horizontal Pod Autoscaler (HPA) Operator 开始监控与触发器关联的扩展数据。HPA 请求从集群 OpenShift API 服务器端点扩展数据。
- OpenShift API 服务器端点由自定义指标自动扩展指标适配器提供。当 metrics 适配器收到自定义指标的请求时,它使用 GRPC 连接控制器来请求它以获取从 scaler 接收的最新触发器数据。
- HPA 根据从 metrics adapter 接收的数据做出缩放决策,并通过增加或减少副本来扩展工作负载。
- 当它运行时,工作负载可能会影响扩展指标。例如,如果扩展工作负载以处理 Kafka 队列中的工作,则队列大小会在工作负载处理所有工作后减小。因此,工作负载会缩减。
-
如果指标位于
minReplicaCount
值指定的范围内,自定义指标自动扩展控制器会禁用所有扩展,并将副本数保留为固定级别。如果指标超过该范围,自定义指标自动扩展控制器将启用扩展并允许 HPA 扩展工作负载。当禁用扩展时,HPA 不会执行任何操作。
3.2.1. Custom Metrics Autoscaler 的自定义 CA 证书
默认情况下,自定义 Metrics Autoscaler Operator 使用自动生成的服务 CA 证书连接到 on-cluster 服务。
如果要使用需要自定义 CA 证书的非集群服务,您可以将所需的证书添加到配置映射中。然后,将配置映射添加到 KedaController
自定义资源,如安装自定义指标自动扩展中所述。Operator 在启动时加载这些证书,并将其注册为 Operator 信任的证书。
配置映射可以包含一个或多个包含一个或多个 PEM 编码 CA 证书的证书文件。或者,您可以为每个证书文件使用单独的配置映射。
如果稍后更新配置映射以添加额外的证书,您必须重启 keda-operator-*
pod 以使更改生效。