×

作为开发人员,您可以使用Red Hat OpenShift的自定义度量自动缩放器Operator来指定OpenShift Container Platform应如何根据不只基于CPU或内存的自定义指标自动增加或减少部署、StatefulSet、自定义资源或作业的Pod数量。

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

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

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

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

对于每个要缩放的工作负载,您只能创建一个缩放对象或缩放作业。此外,您不能在同一个工作负载上同时使用缩放对象或缩放作业以及水平 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 才能使更改生效。