如何使用 Prometheus 适配器根据响应时间(自定义指标)在 Kubernetes 中执行 Horizo​​ntalPodAutoscaling?

how to perform HorizontalPodAutoscaling in Kubernetes based on response time (custom metric) using Prometheus adapter?

大家好,

我有一个基于 kubeadm 的集群,有 1 个 master 和 2 个 worker。我已经实现了内置的 horizo​​ntalPodAutoscaling(基于 cpu_utilization 和内存),现在我想根据自定义指标执行自动缩放( 响应时间 在我的例子中)。

我正在使用 Prometheus 适配器 进行自定义 metrics.And,我在 prometheus 中找不到名称为 response_time 的任何指标。

  1. prometheus 中是否有任何可根据响应时间缩放应用程序的指标及其名称?

  2. 我是否需要编辑默认的水平自动缩放算法,或者我必须从头开始制作一个自动缩放算法,该算法可以根据响应时间缩放我的应用程序?

Prometheus 只有 4 个 metric types: Counter, Gauge, Histogram摘要.

我想 直方图 就是你需要的

A histogram samples observations (usually things like request durations or response sizes) and counts them in configurable buckets. It also provides a sum of all observed values.

A histogram with a base metric name of <basename> exposes multiple time series during a scrape:

  • cumulative counters for the observation buckets, exposed as <basename>_bucket{le="<upper inclusive bound>"}
  • the total sum of all observed values, exposed as <basename>_sum
  • the count of events that have been observed, exposed as <basename>_count (identical to <basename>_bucket{le="+Inf"} above)

1.

有一个 ,您可以在其中查询延迟(响应时间),因此我认为这可能对您有用。

2.

不知道我理解的对不对,如果你想编辑HPA,你可以编辑yaml文件,删除之前的HPA,创建新的。

kubectl delete hpa <name.yaml>
kubectl apply -f <name.yaml>

good article about Autoscaling on custom metrics 具有自定义 Prometheus 指标。