×

作为开发者,您可以使用 Red Hat OpenShift 的自定义指标自动缩放算子来指定 OpenShift Dedicated 如何根据并非仅基于 CPU 或内存的自定义指标自动增加或减少部署、StatefulSet、自定义资源或 Job 的 Pod 数量。

自定义指标自动缩放算子是一个可选算子,基于 Kubernetes 事件驱动自动缩放器 (KEDA),它允许使用 Pod 指标以外的其他指标源来缩放工作负载。

自定义指标自动缩放器目前仅支持 Prometheus、CPU、内存和 Apache Kafka 指标。

自定义指标自动缩放器根据来自特定应用程序的自定义外部指标来向上或向下缩放您的 Pod。您的其他应用程序将继续使用其他缩放方法。您配置 *触发器*(也称为缩放器),它们是自定义指标自动缩放器用来确定如何缩放的事件和指标的来源。自定义指标自动缩放器使用指标 API 将外部指标转换为 OpenShift Dedicated 可以使用的形式。自定义指标自动缩放器创建一个水平 Pod 自动缩放器 (HPA) 来执行实际的缩放。

要使用自定义指标自动缩放器,您需要为工作负载创建一个 `ScaledObject` 或 `ScaledJob` 对象,这是一个定义缩放元数据的自定义资源 (CR)。您需要指定要缩放的部署或 Job,要根据其进行缩放的指标来源(触发器),以及其他参数,例如允许的最小和最大副本数。

您只能为每个要缩放的工作负载创建一个缩放对象或缩放 Job。此外,您不能在同一工作负载上同时使用缩放对象或缩放 Job 和水平 Pod 自动缩放器 (HPA)。

与 HPA 不同的是,自定义指标自动缩放器可以缩放到零。如果您将自定义指标自动缩放器 CR 中的 `minReplicaCount` 值设置为 `0`,则自定义指标自动缩放器会将工作负载从 1 个副本缩放到 0 个副本,或从 0 个副本缩放到 1 个副本。这被称为 *激活阶段*。向上缩放到 1 个副本后,HPA 将接管缩放。这被称为 *缩放阶段*。

某些触发器允许您更改集群指标自动缩放器缩放的副本数。在所有情况下,配置激活阶段的参数始终使用相同的短语,前缀为 *activation*。例如,如果 `threshold` 参数配置缩放,则 `activationThreshold` 将配置激活。配置激活和缩放阶段可以使您的缩放策略更加灵活。例如,您可以配置更高的激活阶段,以防止在指标特别低的情况下进行向上或向下缩放。

如果每个阶段的决策不同,则激活值比缩放值具有更高的优先级。例如,如果 `threshold` 设置为 `10`,而 `activationThreshold` 设置为 `50`,如果指标报告 `40`,则缩放器处于非活动状态,即使 HPA 需要 4 个实例,Pod 也会缩放到零。

Custom metrics autoscaler workflow
图 1. 自定义指标自动缩放器工作流程
  1. 您可以在集群上创建或修改工作负载的缩放对象自定义资源。该对象包含该工作负载的缩放配置。在接受新对象之前,OpenShift API 服务器会将其发送到自定义指标自动缩放器准入 Webhook 进程以确保对象有效。如果验证成功,API 服务器将持久化该对象。

  2. 自定义指标自动缩放控制器监控新的或已修改的缩放对象。当 OpenShift API 服务器通知控制器发生更改时,控制器会监控对象中指定的任何外部触发器源(也称为数据源)的指标数据变化。一个或多个缩放器会向外部触发器源请求缩放数据。例如,对于 Kafka 触发器类型,控制器使用 Kafka 缩放器与 Kafka 实例通信以获取触发器请求的数据。

  3. 控制器为缩放对象创建一个水平 Pod 自动缩放器对象。因此,水平 Pod 自动缩放器 (HPA) 运算符开始监控与触发器关联的缩放数据。HPA 从集群 OpenShift API 服务器端点请求缩放数据。

  4. OpenShift API 服务器端点由自定义指标自动缩放器指标适配器提供服务。当指标适配器接收到自定义指标请求时,它使用 GRPC 连接到控制器,以请求从缩放器接收到的最新触发器数据。

  5. HPA 根据从指标适配器接收到的数据做出缩放决策,并通过增加或减少副本数量来向上或向下缩放工作负载。

  6. 在运行过程中,工作负载可能会影响缩放指标。例如,如果工作负载被缩放以处理 Kafka 队列中的工作,则在工作负载处理所有工作后,队列大小会减小。因此,工作负载将被缩小。

  7. 如果指标在由minReplicaCount值指定的范围内,则自定义指标自动缩放控制器将禁用所有缩放,并将副本计数保持在固定级别。如果指标超过该范围,则自定义指标自动缩放控制器将启用缩放并允许 HPA 缩放工作负载。在缩放被禁用时,HPA 不会采取任何措施。

自定义指标自动缩放器的自定义 CA 证书

默认情况下,自定义指标自动缩放器运算符使用自动生成的 service CA 证书来连接到集群内服务。

如果您想使用需要自定义 CA 证书的集群外服务,您可以将所需的证书添加到配置映射。然后,按照安装自定义指标自动缩放器中的说明,将配置映射添加到KedaController自定义资源。运算符在启动时加载这些证书,并将其注册为运算符信任的证书。

配置映射可以包含一个或多个证书文件,这些文件包含一个或多个 PEM 编码的 CA 证书。或者,您可以为每个证书文件使用单独的配置映射。

如果您稍后更新配置映射以添加其他证书,则必须重新启动keda-operator-* pod才能使更改生效。