×

作为开发人员,您可以使用 Red Hat OpenShift 的自定义指标自动缩放器操作符来指定 Red Hat OpenShift Service on AWS 如何根据并非仅基于 CPU 或内存的自定义指标自动增加或减少部署、有状态集、自定义资源或作业的 Pod 数量。

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

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

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

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

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

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

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

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

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才能使更改生效。